var openList	= "";


///////////////////// Beyond here be functions ////////////////

function verifyForm(pgForm)
{
	var errMsgs		= new Array();
	var reqMsgSet	= false;
	for(var i = 0; i < pgForm.elements.length; i++)
	{
		if(pgForm.elements[i].name == 'user_name')
		{
			if((pgForm.elements[i].value.length < 6)||(pgForm.elements[i].value.length > 12))
			{
				if(!alertMsg){var alertMsg	= "User names must be 6 - 12 characters long.";}
				else{alertMsg = alertMsg+"\nUser names must be 6 - 12 characters long.";}
				errMsgs.push(pgForm.elements[i].name);
			}
		}
		if(pgForm.elements[i].name == 'email')
		{
			if(isValidEmail(pgForm.elements[i].value) == false)
			{
				if(!alertMsg){var alertMsg	= "A valid Email address is required!";}
				else{alertMsg = alertMsg+"\nA valid Email address is required!";}
				errMsgs.push(pgForm.elements[i].name);
			}
			var priEmail	= pgForm.elements[i].value;
		}
		if(pgForm.elements[i].name == 'ver_email')
		{
			if(pgForm.elements[i].value != priEmail)
			{
				if(!alertMsg){var alertMsg	= "Email addresses do not match!";}
				else{alertMsg = alertMsg+"\nEmail addresses do not match!";}
				errMsgs.push(pgForm.elements[i].name);
			}
			if(pgForm.elements[i].value ==''){errMsgs.push(pgForm.elements[i].name);}
		}
		if(pgForm.elements[i].name == 'user_pass')
		{
			if(isValidPass(pgForm.elements[i].value) == false)
			{
				if(!alertMsg){var alertMsg	= "A password is required and may contain only Numbers, letters and these characters; @#$!%&";}
				else{alertMsg = alertMsg+"\nA password is required may contain only Numbers, letters and these characters; @#$!%&";}
				errMsgs.push(pgForm.elements[i].name);
				
			}else{
				var userPass	= pgForm.elements[i].value;
			}
		}
		if(pgForm.elements[i].name == 'verify_pass')
		{
			if(pgForm.elements[i].value != userPass)
			{
				if(!alertMsg){var alertMsg	= "Passwords do not match!";}
				else{alertMsg = alertMsg+"\nPasswords do not match!";}
				errMsgs.push(pgForm.elements[i].name);
			}
		}
		if(pgForm.elements[i].getAttribute('number'))
		{
			var numVal		= pgForm.elements[i].getAttribute('number');
			var	shoVal		= numVal.replace(/,/, " - ");
			var regExpObj	= new RegExp("^\\d{"+numVal+"}$");
			if(pgForm.elements[i].getAttribute('required') == '1') 
			{
				if(regExpObj.exec(pgForm.elements[i].value) == null)
				{
					if(!alertMsg){var alertMsg	= "Field "+pgForm.elements[i].name+" must be "+shoVal+" digits only";}
					else{alertMsg += "\nField "+pgForm.elements[i].name+" must be "+shoVal+" digits only";}
					errMsgs.push(pgForm.elements[i].name);
				}
			}else{
				if((pgForm.elements[i].value.search(regExpObj) == -1) && (pgForm.elements[i].value.length > 0))
				{
					if(!alertMsg){var alertMsg	= "Field "+pgForm.elements[i].name+" must be "+shoVal+" digits only";}
					else{alertMsg += "\nField "+pgForm.elements[i].name+" must be "+shoVal+" digits only";}
					errMsgs.push(pgForm.elements[i].name);
				}
			}
		}
		if(pgForm.elements[i].getAttribute('required') == '1')
		{
			if(pgForm.elements[i].value == '')
			{
				if(!reqMsgSet)
				{
					if(!alertMsg){var alertMsg	= "Please fill in all highlighted fields.";}
					else{alertMsg = alertMsg+"\nPlease fill in all highlighted fields.";};
					reqMsgSet	= 1
				}
				if(pgForm.elements[i].type != 'radio')
				{
					errMsgs.push(pgForm.elements[i].name);
				}
			}
		}
	}
	if(errMsgs.length > 0)
	{
		var errSpan	= $('error');
		alert(alertMsg);
		for(var j = 0; j < errMsgs.length; j++)
		{
			var fieldName	= errMsgs[j];
			pgForm.elements[fieldName].style.background = '#fff3c8';
		}
		return false;
	}
	return true;
}

function submitSiteEdit(serverScript, divID, pgForm)
{
	updateReq		= new xmlRequest();
	var errMsgs	= new Array();
	var formSubmit	= null;
	var fieldData;
	for(var i = 0; i < pgForm.elements.length; i++)
	{
		if(pgForm.elements[i].name)
		{
			if(!formSubmit)
			{
				if((pgForm.elements[i].type == 'text')||(pgForm.elements[i].type == 'textarea'))
				{
					
					if(isValidInput(pgForm.elements[i].value) == false)
					{
						if(!alertMsg){var alertMsg	= "Invalid character in data field! Characters must be valid UTF-8";}
						else{alertMsg = alertMsg+"\nInvalid character in data field! Characters must be valid UTF-8";}
						errMsgs.push(pgForm.elements[i].name);
					}else{
						
						formSubmit = pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);
					}
				}
				else if((pgForm.elements[i].type == 'checkbox')||(pgForm.elements[i].type == 'radio'))
				{
					if(pgForm.elements[i].checked){formSubmit = pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);}
				}
				else if(pgForm.elements[i].type == 'submit')
				{
					if(pgForm.elements[i].getAttribute('clicked') != 0){formSubmit = pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);}
				}else{
					formSubmit = pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);
				}
				if(pgForm.elements[i].getAttribute('required') == '1')
				{
					if(pgForm.elements[i].value == '')
					{
						errMsgs.push(pgForm.elements[i].name);
						if(!alertMsg){var alertMsg = 'Invalid data in required field(s)\nPlease complete all higlighted fields';}
						alert(alertMsgpg+"\n"+Form.elements[i].name);
					}
				}
			}else{
				if((pgForm.elements[i].type == 'text')||(pgForm.elements[i].type == 'textarea'))
				{
					if(isValidInput(pgForm.elements[i].value) == false)
					{
						if(!alertMsg){var alertMsg	= "Invalid character in data field! Characters must be valid UTF-8";}
						else{alertMsg = alertMsg+"\nInvalid character in data field! Characters must be valid UTF-8";}
						errMsgs.push(pgForm.elements[i].name);
					}else{
						formSubmit += '&'+pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);
					}
				}else{
					if((pgForm.elements[i].type == 'checkbox')||(pgForm.elements[i].type == 'radio'))
					{
						if(pgForm.elements[i].checked){formSubmit += '&'+pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);}
					}
					else if(pgForm.elements[i].type == 'submit')
					{
						if(pgForm.elements[i].getAttribute('clicked') != 0){formSubmit += '&'+pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);}
					}else{
						formSubmit += '&'+pgForm.elements[i].name+'='+escape(pgForm.elements[i].value);
					}
				}
				if(pgForm.elements[i].getAttribute('number'))
				{
					var numVal		= pgForm.elements[i].getAttribute('number');
					var	shoVal		= numVal.replace(/,/, " - ");
					var regExpObj	= new RegExp("^\\d{"+numVal+"}$");
					if(pgForm.elements[i].getAttribute('required') == '1') 
					{
						if(isNaN(pgForm.elements[i].value))
						{
							if(!alertMsg){var alertMsg	= "Field "+pgForm.elements[i].name+" must be "+shoVal+" digits only\nPlease complete all higlighted fields";}
							else{alertMsg += "\nField "+pgForm.elements[i].name+" must be "+shoVal+" digits only";}
							errMsgs.push(pgForm.elements[i].name);
						}
					}
				}
				if(pgForm.elements[i].getAttribute('required') == '1')
				{
					if(pgForm.elements[i].value == '')
					{
						errMsgs.push(pgForm.elements[i].name);
						if(!alertMsg){var alertMsg = 'Invalid data in required field(s)\nPlease complete all higlighted fields'+pgForm.elements[i].value;}
						
					}
				}
			}
		}
	}
	if(errMsgs.length > 0)
	{
		alert("ERROR:\n"+alertMsg);
		for(var i = 0; i < errMsgs.length; i++)
		{
			var fieldName	= errMsgs[i];
			pgForm.elements[fieldName].style.background = '#fff3c8';
		}
		return false;
	}
	updateReq.open("POST", serverScript, true);
	updateReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	updateReq.onreadystatechange = function()
	{
		if (updateReq.readyState == 4 && updateReq.status == 200)
		{
			if(updateReq.responseText.substr(0, 6) == "ERROR:")
			{
				alert(updateReq.responseText+"\nPlease correct errors listed");
			}
			else if(updateReq.responseText.substr(0,2) == "OK")
			{
				var startEnd	= updateReq.responseText.indexOf('!');
				alert(updateReq.responseText.substr(3, startEnd-2));
				$(divID).innerHTML = updateReq.responseText.substr(startEnd+1);
				openList	= "";
			}else{
				alert(updateReq.responseText);
			}
		}
	}
	updateReq.send(formSubmit);
	return false;
}

function showSites(serverScript, ID)
{
	siteReq		= new xmlRequest();
	targetList	= $(ID);
	if(targetList == openList)
	{
		targetList.innerHTML = "";
		openList	= "";
		targetList.style.display	= "none";
	}else{
		siteReq.open("GET", serverScript, true);
		siteReq.onreadystatechange = function()
		{
			if((siteReq.readyState == 4)&&(siteReq.status == 200))
			{
				if(openList !="")
				{
					openList.innerHTML	= "";
					openList.style.display	= 'none';
				}
				targetList.innerHTML	= siteReq.responseText;
				openList	= targetList;
				targetList.style.display	= 'block';
			}
		}
		siteReq.send(null);
	}
	return false;
}

function viewUpdates(serverScript, ID)
{
	siteReq		= new xmlRequest();
	targetList	= $(ID);
	openList	= "";
	targetList.style.display	= 'block';
	siteReq.open("GET", serverScript, true);
	siteReq.onreadystatechange = function()
	{
		if((siteReq.readyState == 4)&&(siteReq.status == 200))
		{
			targetList.innerHTML	= siteReq.responseText;
		}
	}
	siteReq.send(null);
	return false;
}

function editSite(serverScript, ID)
{
	siteReq		= new xmlRequest();
	targetList	= $(ID);
	if(targetList == openList)
	{
		targetList.innerHTML = "";
		openList	= "";
		targetList.style.display	= "none";
	}else{
		siteReq.open("GET", serverScript, true);
		siteReq.onreadystatechange = function()
		{
			if((siteReq.readyState == 4)&&(siteReq.status == 200))
			{
				if(openList !="")
				{
					openList.innerHTML	= "";
					openList.style.display	= 'none';
				}
				if(siteReq.responseText.substr(0, 6) == "ERROR:")
				{
					var startEnd	= siteReq.responseText.indexOf('!');
					alert(siteReq.responseText.substr(7, startEnd-6));
					targetList.innerHTML	= siteReq.responseText.substr(startEnd+1);
				}else{
					targetList.innerHTML	= siteReq.responseText;
				}
				openList	= targetList;
				targetList.style.display	= 'block';
			}
		}
		siteReq.send(null);
	}
	return false;
}

function addSite(serverScript, ID)
{
	siteReq		= new xmlRequest();
	targetList	= $(ID);
	siteReq.open("GET", serverScript, true);
	siteReq.onreadystatechange = function()
	{
		if((siteReq.readyState == 4)&&(siteReq.status == 200))
		{
			if(siteReq.responseText.substr(0, 6) == "ERROR:")
			{
				var startEnd	= siteReq.responseText.indexOf('!');
				alert(siteReq.responseText.substr(7, startEnd-6));
				targetList.innerHTML	= siteReq.responseText.substr(startEnd+1);
			}else{
				targetList.innerHTML	= siteReq.responseText;
			}
		}
	}
	siteReq.send(null);
	return false;
}

function isValidInput(dataValue)
{
	dataValue	= dataValue.trim();
	if(dataValue.search(/[^a-zA-Z0-9,;\.\s\-_\+=\[\]<>\/#\(\)\|\$&]+/) == -1)
	{
		return true;
	}else{
		return false;
	}
}
function isValidEmail(email)
{
	email	= email.trim();
	if(email.search(/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i) == -1)
	{
		return false;
	}else{
		return true;
	}
}

function isValidPass(pass)
{
	pass	= pass.trim();
	if(pass.search(/[-a-z0-9]/) == -1)
	{
		return false;
	}else{
		return true;
	}
}

function $(id) 
{
	return document.getElementById(id);
}

String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.ltrim = function()
{
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function()
{
	return this.replace(/\s+$/,"");
}

function xmlRequest()
{
	try
	{
		xmlHttp=new XMLHttpRequest();
	}catch(e){
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}catch (e){
				alert("Your browser is quite out-dated and does not support AJAX!");
			}
		}
	}
	return xmlHttp;
}

var enablepersist="off" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious="yes" //Collapse previously open content when opening present? (yes/no)
		var contractsymbol='<img style="border: 0" src="/graphics/minus.gif" />'
		var expandsymbol='<img style="border: 0" src="/graphics/plus.gif" />'

if (document.getElementById)
{
	document.write('<style type="text/css">')
	document.write('.switchcontent{display:none;}')
	document.write('</style>')
}

function getElementbyClass(rootobj, classname)
{
	var temparray=new Array()
	var inc=0
	var rootlength=rootobj.length
	for (i=0; i<rootlength; i++)
	{
		if (rootobj[i].className==classname)
		temparray[inc++]=rootobj[i]
	}
	return temparray
}

function sweeptoggle(ec)
{
	var thestate=(ec=="expand")? "block" : "none"
	var inc=0
	while (ccollect[inc])
	{
		ccollect[inc].style.display=thestate
		inc++
	}
	revivestatus()
}


function contractcontent(omit)
{
	var inc=0
	while (ccollect[inc])
	{
		if (ccollect[inc].id!=omit)
		ccollect[inc].style.display="none"
		inc++
	}
}

function expandcontent(curobj, cid)
{
	var spantags=curobj.getElementsByTagName("SPAN")
	var showstateobj=getElementbyClass(spantags, "showstate")
	if (ccollect.length>0)
	{
		if (collapseprevious=="yes")
		contractcontent(cid)
		document.getElementById(cid).style.display=(document.getElementById(cid).style.display!="block")? "block" : "none"
		if (showstateobj.length>0)	 //if "showstate" span exists in header
		{
			if (collapseprevious=="no")
			showstateobj[0].innerHTML=(document.getElementById(cid).style.display=="block")? contractsymbol : expandsymbol
			else
			revivestatus()
		}
	}
}

function revivecontent()
{
	contractcontent("omitnothing")
	selectedItem=getselectedItem()
	selectedComponents=selectedItem.split("|")
	for (i=0; i<selectedComponents.length-1; i++)
	document.getElementById(selectedComponents[i]).style.display="block"
}

function revivestatus()
{
	var inc=0
	while (statecollect[inc])
	{
		if (ccollect[inc].style.display=="block")
			statecollect[inc].innerHTML=contractsymbol
		else
			statecollect[inc].innerHTML=expandsymbol
			inc++
	}
}

function get_cookie(Name) 
{ 
	var search = Name + "="
	var returnvalue = "";
	if (document.cookie.length > 0) 
	{
		offset = document.cookie.indexOf(search)
		if (offset != -1) 
		{ 
			offset += search.length
			end = document.cookie.indexOf(";", offset);
			if (end == -1) end = document.cookie.length;
				returnvalue=unescape(document.cookie.substring(offset, end))
		}
	}
	return returnvalue;
}

function getselectedItem()
{
	if (get_cookie(window.location.pathname) != "")
	{
		selectedItem=get_cookie(window.location.pathname)
		return selectedItem
	}
	else
		return ""
}

function saveswitchstate()
{
	var inc=0, selectedItem=""
	while (ccollect[inc])
	{
		if (ccollect[inc].style.display=="block")
		selectedItem+=ccollect[inc].id+"|"
		inc++
	}
	document.cookie=window.location.pathname+"="+selectedItem
}

function do_onload(){
	uniqueidn=window.location.pathname+"firsttimeload"
	var alltags=document.all? document.all : document.getElementsByTagName("*")
	ccollect=getElementbyClass(alltags, "switchcontent")
	statecollect=getElementbyClass(alltags, "showstate")
	if (enablepersist=="on" && ccollect.length>0)
	{
		document.cookie=(get_cookie(uniqueidn)=="")? uniqueidn+"=1" : uniqueidn+"=0" 
		firsttimeload=(get_cookie(uniqueidn)==1)? 1 : 0 //check if this is 1st page load
		if (!firsttimeload)
		revivecontent()
	}
	if (ccollect.length>0 && statecollect.length>0)
	revivestatus()
}

if (window.addEventListener)
	window.addEventListener("load", do_onload, false)
else if (window.attachEvent)
	window.attachEvent("onload", do_onload)
else if (document.getElementById)
	window.onload=do_onload

if (enablepersist=="on" && document.getElementById)
	window.onunload=saveswitchstate

