var myPath  = getBasePath();
var scriptPath = myPath + '/scripts';

var procname = "/school/processors/account.php";

include ( scriptPath + "/md5.js" );
if ( typeof ( verify ) != "function" )
{
	include ( scriptPath + "/formutils.js" );
}

function checkForExistingAccount (e)
{
	var obj = null;
	if ( e.srcElement != null )
	{
		obj = e.srcElement;
	}
	else
	{
		obj = e.target;
	}
	if ( obj != null && obj.value != "" )
	{
		var myQry = "?ajaction=checkaccount&ts=" + new Date().getTime();
		myQry += "&email=" + obj.value;
		var loader = new net.ContentLoader( processor, myQry, "POST", processAjaxResponse );
	}
}

function processAccountForm (e)
{
	var obj = null;
	if ( e.srcElement != null )
	{
		obj = e.srcElement;
	}
	else
	{
		obj = e.target;
	}
	if ( obj != null )
	{
		var errorMsg = '';
		var ajaction = '';
		var actionMsg = '';
		var myForm = obj.form;
		var process = true;
		if ( myForm != null )
		{
			var validForm = verify ( myForm );
			if ( validForm )
			{
				switch ( myForm.id )
				{
					case "calendarlogin":
						ajaction   = "login";
						var myPW   = document.getElementById("inppassword");
						var myUN   = document.getElementById("username");
						var myRPW  = document.getElementById("password");
						if ( myRPW != null )
						{
							actionMsg = "Loging In...";
							myRPW.value =  hex_md5 ( myPW.value );
							myPW.value = '';
						}
						else
						{
							process = false;
							if ( myUN != null )
							{
								myUN.value = '';
							}
							if ( myPW != null )
							{
								myPW.value = '';
							}
							errorMsg = "Incorrect login form, cannot process.";
							if ( typeof ( createMessageArea ) == "function" )
							{
								createMessageArea ( "syserror", errorMsg, true );
							}
							else
							{
								alert ( errorMsg );
							}
						}
						break
						
					case "calendaraccount":
						process = true;
						ajaction="createaccount";
						actionMsg = "Creating Account, please wait..."
						break;
						
					case "frmlostpw":
						ajaction="lostpw";
						actionMsg = "Getting new password, please wait..."
						process = true;
						break;
						
					default:
						break;
				}
				if ( process )
				{
					if ( typeof ( createMessageArea ) == "function" )
					{
						createMessageArea ( "sysmessage", actionMsg );
					}
					var formFields = buildQueryFromForm(myForm.id).replace(/^(\?|&)/, "");
					var myQry = "?ajaction=" + ajaction + "&" + formFields + "&ts=" + new Date().getTime();
					var loader = new net.ContentLoader( processor, myQry, "POST", processAjaxResponse );
				}
			} // end of Valid form
		} // End of forms check
	} // End of event object
}

function localFormHandlers (e)
{
	var pageForms = document.getElementsByTagName("form");
	if ( pageForms != null )
	{
		var formId = null;
		var mySubmitid = null;
		var haveForm = false;
		for ( var i = 0; i < pageForms.length; i++ )
		{
			if ( pageForms[i].id != null )
			{
				formId = pageForms[i].id;
				switch ( formId )
				{
					case "calendaraccount":
						mySubmitId = formId.substr(formId.indexOf("calendar")+8);
						var fldEmail = document.getElementById("usr_email");
						if ( fldEmail != null )
						{
							fldEmail.onblur = function () { return false };
							addEvent ( fldEmail, "blur", checkForExistingAccount, false );
						}
						haveForm = true;
						break;

					case "calendarlogin":
						var formLink = document.getElementById("showaccountform");
						if ( formLink != null )
						{
							formLink.onclick = null;
							addEvent ( formLink, "click", showAccountForm, false );
						}
						mySubmitId = formId.substr(formId.indexOf("calendar")+8);
						haveForm = true;
						break;
						
					case "frmlostpw":
						mySubmitId = "btnlostpw";
						haveForm = true;
						break;

					default:
						break;
				}
			}
			if ( haveForm )
			{
				break;
			}
		}
		if ( formId != null )
		{
			var myForm = document.getElementById(formId);
			if ( myForm != null )
			{
				myForm.onSubmit = null;
				myForm.onsubmit = function () { return false };
				
				var mySubmit = document.getElementById(mySubmitId);
				if ( mySubmit != null )
				{
					addEvent ( mySubmit, "click", processAccountForm, false );
				}
			}
		}
	}
}

function localListResponse ( action, XML )
{
	switch ( action )
	{
		case 'accountcreated':
			var myRoot  = XML.documentElement;
			var xNav = myRoot.getElementsByTagName("navigation")[0];
			if ( xNav != null )
			{
				var nextPage = "";
				var respPage = xNav.getElementsByTagName("nextpage")[0];
				if ( respPage != null && respPage.firstChild != null )
				{
					nextPage = respPage.firstChild.nodeValue;
				}
				if ( nextPage != '' )
				{
					var xRecords = myRoot.getElementsByTagName("records")[0];
					if ( xRecords != null )
					{
						var record = xRecords.getElementsByTagName("record")[0];
						if ( record != null && record.firstChild != null )
						{
							var myLabel = null;
							var myId    = null;
							var myXLabel = record.getElementsByTagName("reclbl")[0];
							if ( myXLabel != null && myXLabel.firstChild != null )
							{
								myLabel = myXLabel.firstChild.nodeValue;
								var myXId = record.getElementsByTagName("recid")[0];
								if ( myXId != null && myXId.firstChild != null )
								{
									myId = myXId.firstChild.nodeValue;
								}
							}
						}
						if ( myLabel != null && myId != null )
						{
							nextPage += "?" + myLabel + "=" + myId;
						}
					}
					document.location.replace(nextPage);
				}			
			}
			break;
			
		default:
			break;
	}
}

function showAccountForm (e)
{
	stopEvent(e);
	var myHeader = document.getElementById("acctheader");
	myHeader.innerHTML=" Create Account";

	var myQry = "?ajaction=loadform&ts=" + new Date().getTime();
	myQry += "&formid=calendaraccount";
	var loader = new net.ContentLoader( processor, myQry, "POST", processAjaxResponse );
}

function setPageHandlers (e)
{
	var myFormId  = "";
	var formArea = document.getElementById("calendaraccount_form");
	if ( formArea != null )
	{
		if ( listname == "index" )
		{
			var myFormId  = "calendarlogin";
			var hdrText = " Login";
			var myQuery = document.location.search;
			if ( myQuery != null && myQuery != "" )
			{
				if ( myQuery.indexOf("newaccount") != -1 )
				{
					hdrText = " Create Account";
					myFormId = "calendaraccount";
				}
			}
			var myHeader = document.getElementById("acctheader");
			clearArea ( "acctheader" );
			myHeader.innerHTML=hdrText;
		}
		else
		{
			myFormId = "password";
		}
		var myQry = "?ajaction=loadform&ts=" + new Date().getTime();
		myQry += "&formid=" + myFormId;
		var loader = new net.ContentLoader( processor, myQry, "POST", processAjaxResponse );
	}
}

addEvent ( window, "load", setPageHandlers, false );
