/*
'Author					: Stefan Kruger
'Date Created			: 09-Dec-2005
'Last Changed by		: Stefan Kruger
'Date Last Changed		: 03-Jan-2006
'Version				: 1.0.03012006
'Comments/Changes:
'Date:			Person:					Desc:
'------------------------------------------------------------------------------------------------------
'09-Dec-2005	Stefan Kruger			Created file
'23-Dec-2005	Stefan Kruger			Added custom homepage loading

'ToDo List:
'Date:			Person:					Desc:
'------------------------------------------------------------------------------------------------------
*/

//////////////////////////////////////////////////////////////////////////////////////////////
//PREDEFINED USER FUNCTIONS USED IN THE POST-LOADING OF LOGIN
//////////////////////////////////////////////////////////////////////////////////////////////
/*
This function is called on successful finish of an actual login to check for login success or failure
*/
var loginChecker = function (oXML,outputDiv) {
	var retar = new Array();
	//alert(oXML.responseText);
	retar = (oXML.responseText).split("^||^");
	if (retar.length) {
		if (retar.length == 6) {
			//Valid login
			if (parseInt(retar[0]) == 1){
				logInUser(retar[4]);
			}
			//Invalid login
			else {
				showLogin();
				//getMessageBox(retar[1],retar[2],defaultoutputdiv);
			}
		}
		else {
			alert("Invalid length of login verification data returned.");
		}
	}
	else {
		alert ("Empty login verification data returned.");
	}
	hideLoading();
	oXML = null;
};

/*
This function is used when displaying a loaded login page
*/
var completedLoginLoad = function (oXML,outputDiv) {
	var display = pageLoadChecker(oXML,outputDiv);
	display = oXML.responseText;
	if (display) {
		outputDiv.innerHTML = display;
	}
	hideLoading();
	display = null;
	oXML = null;
	//Focus fixer.
	if (document.getElementById("frmLogin").username.value == "") {
		document.getElementById("frmLogin").username.focus();
	}
	else {
		document.getElementById("frmLogin").password.focus();
	}
};

//////////////////////////////////////////////////////////////////////////////////////////////
//ACTUAL LOGIN FUNCTIONS
//////////////////////////////////////////////////////////////////////////////////////////////
/*
The function displaying a login page
*/
function showLogin() {
	setupHomeScreen();
	//Set up option pane
	if (document.getElementById("optionpane")) {
		document.getElementById("optionpane").style.display = "none";	
	}
}

/*
Batch function to process login display setup when user has been authorised
*/
function logInUser(){
	setupHomeScreen();
	//Set up option pane
	if (document.getElementById("optionpane")) {
		document.getElementById("optionpane").style.display = "";
	}
}

function setupHomeScreen(){
	//Load tab menu
	getTabMenu(true);
	//Set up default output division
	getDefaultOutputDiv();
	//Load home page
	getHomePage();
}

/*
Function to retrieve and load the home page guid from cookies
*/
function getHomePage(){
	var loadHome = function(oXML) {
		if (oXML.status == 200) {
			var homeguid = oXML.responseText;
			if (homeguid.length > 0) {
				getPage(homeguid,"");
			}
			else {
				alert("Warning : No home page id was found. Page content may not display correctly.");
			}
		}
		else {
			alert("Error occured while fetching home page.\nError code returned was : " + oXML.status);
		}
	}
	//Hide submenu items
	//getTabSubMenu(false,null);
	hiddenSubmit("bin/actionfunctionmanager.asp","action=gethomeguid",loadHome,0,null,null,true);
}

/*
Batch function to process a complete logoff
If sessionExpiry is true a sessionexpired message is displayed instead of the default logoff
*/
function logOffUser(sessionExpiry){
	//Clear cookies
	hiddenSubmit("bin/logoff.asp","",null,4,null,null,false);
	//Clear content
	contentHider();
	//Clear tab menu
	getTabMenu(false);
	//Display message
	if (sessionExpiry) {
		//getMessageBox("Session Expired","Because of more strict security measures in place, you are unable to view any more pages.|^^|This should only happen every 24 hours or if your IP address changes.|^^|Please log in again.",defaultoutputdiv);
	}
	else {
		//getMessageBox("Logged off","You have logged off successfully.",defaultoutputdiv);
	}
	//Show login
	showLogin();
}

/*
A function that logs off the current user and displays the session expiry message
*/
function expireSession(){
	logOffUser(true);
}

/*
This function is an entry point to either authorising a user login or mailing of password from login screen
loginOrForget = true --> login
loginOrForget = false --> mail password (for Logoff)
*/
function doLogin(loginOrForget,site){
	if (document.getElementById("frmLogin").username.value != ""){
		if (loginOrForget){
			if (document.getElementById("frmLogin").password.value != ""){
				var data = fetchInputFormData("frmLogin");
				//alert(data);
				hiddenSubmit(document.getElementById("frmLogin").action,data,loginChecker,0,null,null,true);
			}
			else {
				alert("Please enter your password.");
			}
		}
		else {
			//Reset forgot pasword
			goToResetPassword(document.getElementById("frmLogin").username.value,site);
		}
	}
	else {
		alert("Please enter your username before proceding.");
	}
	return false;
}

/*
These functions are used for the reset of a users password.
*/
function goToResetPassword(mailad,site) {
	var page = "bin/resetpassword.asp";
	var data = "action=forgotpassword&email=" + mailad + "&site=" + site;
	genericSubmit(page,data,null,null,defaultoutputdiv,completedSingleLoad,regularloadingstring);
}

function checkReminderQuestion(){
	if (document.getElementById("frmForgotPassword").txtAnswer.value != ""){
		var page = "bin/resetpassword.asp";
		var data = fetchInputFormData("frmForgotPassword");
		genericSubmit(page,data,null,null,defaultoutputdiv,completedSingleLoad,regularloadingstring);
	}
	else {
		alert("Please enter an answer before proceding.");
	}
}

function changePassword(){
	var form = document.frmForgotPassword;
	if (form) {
		if (form.txtNewPass.value.length >= 6){
			if (form.txtNewPass.value == form.txtConfirmPass.value){
				var updatePass = function (oXML) {
					var result = oXML.responseText.split(splitterregex);
					alert(result[1]);
					if (parseInt(result[0]) == 1) {
						getHomePage();
					}
					else {
						form.txtNewPass.value = "";
						form.txtConfirmPass.value = "";
					}
				}
				var page = "bin/resetpassword.asp";
				var data = "action=updatepassword&userid=" + form.userid.value + "&password=" + form.txtNewPass.value 
				hiddenSubmit(page,data,updatePass,0,null,null,true);
			}
			else {
				alert("The new password and confirm password values differ. Please verify that you've typed both correctly and try again.");
			}
		}
		else {
			alert("The new password needs to be at least six (6) characters in length. Please select a different password.");
		}
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////
//EVENT LISTENERS
//////////////////////////////////////////////////////////////////////////////////////////////
/*
Login password box enter press listener
*/
function checkLoginForEnter(fld,evt){
	if (isEnterKey(evt)){
		doLogin(true,"");
		if (!evt) var evt = window.event;
		evt.cancelBubble = true;
		evt.returnValue = false;
		if (evt.stopPropagation) evt.stopPropogation();
		return false;
	}
}