function AttemptLogin() {
	if (Status != "idle") return;
	oLogin.Caption = "Logging in...";
	oLogin.Render();
	
	var oTransaction = oQueueSystem.Transactions.Add();
	oTransaction.RequestBuilder  = AJAX_AttemptLoginBuilder;
	oTransaction.ResponseHandler = AJAX_AttemptLoginHandler;
	oTransaction.StatusMessage = "Attempting login...";
	oTransaction.Ready();
	
	oLogin.Disable();
	oCtlOrg.Disable();
	oCtlUser.Disable();
	oCtlPass.Disable();
}


function LoginFailed(sReason) {
	oLogin.Enable();
	oCtlOrg.Enable();
	oCtlUser.Enable();
	oCtlPass.Enable();
	
	oLogin.Caption = "Login";
	oLogin.Render();
	
	
	
}

			
function DownloadBanner(sOrgName) {
	var oTransaction = oQueueSystem.Transactions.Add();
	oTransaction.RequestBuilder  = AJAX_GetOrganisationBannerBuilder;
	oTransaction.ResponseHandler = AJAX_GetOrganisationBannerHandler;
	oTransaction.StatusMessage = "Downloading Organisation Banner...";
	oTransaction.Params.Add("OrganisationName", sOrgName);
	
	oTransaction.Ready();
}


function DisplayBanner(sURL) {
	LoginBanner.src = "/CTWebImages/" + sURL;
	LoginBanner.style.visibility = "visible";
}


function AJAX_GetOrganisationBannerBuilder(oJSCtl, oAJAXTransaction, oAJAXRequest) {			
	oAJAXRequest.RequestHandler = "PUBLICACCESS";
	oAJAXRequest.RequestAction = "GETORGBANNERFILENAME";
	
	var sOrgName = oAJAXTransaction.Params.Find("Name", "OrganisationName", true).Value;
	
	oAJAXRequest.RequestParameters.Add("Arguments").Nodes.Add("OrganisationName", sOrgName); 
}


function AJAX_GetOrganisationBannerHandler(oAJAXTransaction, oAJAXRequest) {
	var xmlDoc = oAJAXRequest.XMLResponse;
	var xmlDebugMessages = xmlDoc.selectSingleNode("//DataTransfer/Header/DebugMessages");
	for (var i = 0; i < xmlDebugMessages.childNodes.length; i++) alert(xmlDebugMessages.childNodes[i].text);
	if (oAJAXRequest.Response.ErrorNumber != 0) {
	    new AJAXError(oAJAXRequest).Show();
		return;
	} 
	
	var sBanner = oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/LoginBanner").text;
	if (sBanner == "") sBanner = 'header_ContactTracker.jpg';
	
	DisplayBanner(sBanner);
}


function AJAX_AttemptLoginBuilder(oJSCtl, oAJAXTransaction, oAJAXRequest) {
	oAJAXRequest.RequestHandler = "PUBLICACCESS";
	oAJAXRequest.RequestAction = "LOGIN";
					
	var args = oAJAXRequest.RequestParameters.Add("Arguments")
	args.Nodes.Add("Organisation",	oCtlOrg.Input.value);
	args.Nodes.Add("Username",		oCtlUser.Input.value);
	args.Nodes.Add("Password",		oCtlPass.Input.value);
}


function AJAX_AttemptLoginHandler(oAJAXTransaction, oAJAXRequest) {
	var xmlDoc = oAJAXRequest.XMLResponse;
	var xmlDebugMessages = xmlDoc.selectSingleNode("//DataTransfer/Header/DebugMessages");
	//for (var i = 0; i < xmlDebugMessages.childNodes.length; i++) alert('Debug Messages: ' + xmlDebugMessages.childNodes[i].text);
	if (oAJAXRequest.Response.ErrorNumber != 0) {
	    new AJAXError(oAJAXRequest).Show();
		LoginFailed("Login Failed: " + oAJAXRequest.Response.ErrorDescription);		    
		return;
	}
	
	setCookie("LoggedIn",			"True");
	setCookie("OrganisationID",		oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/OrgID").text);
	setCookie("CurrentUserID",		oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/UserID").text);
	setCookie("CurrentFormID",		oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/DefaultFormID").text);	
	setCookie("UserDatabaseID",		oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/DefaultDatabaseID").text);
	setCookie("CurrentDatabaseID",	oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/DefaultDatabaseID").text);
	setCookie("AuthenticationKey",	oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/AuthenticationKey").text);


	setCookie("CurrentOrganisation", oCtlOrg.Input.value,  false);
	setCookie("CurrentUserName",	oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/UserName").text, false);	
	setCookie("CurrentPass",		 EncodeHTML(oCtlPass.Input.value), false);
	
	var xmlLoginMessages = oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/LoginMessages");
	if (xmlLoginMessages != null)
	{
	    for (var i = 0; i < xmlLoginMessages.childNodes.length; i++)
	    {
	        Msgbox(xmlLoginMessages.childNodes[i].text, vbInformation + vbOKOnly, "Logon Message");
	    }
	}
	
	var strFrontEntryPage = oAJAXRequest.XMLResponse.selectSingleNode("//DataTransfer/Response/DefaultEntryPage").text;

	var o = newDialog(strFrontEntryPage + '?screenWidth=' + screen.width + '&screenHeight=' + screen.height,'' + screen.width, '' + screen.height, "LoginPage");

	if (o) {
		
		window.close();
	}else {
		document.write("The ContactTracker Web Interface has detected that you have a popup blocker enabled which will not let the Web Interface continue to load.<br>");
		document.write("Please add Web Interface URL address to its safe list before attempting to continue.");
	}
}



function SetInitialValues() {
	var sPass = UnencodeHTML(getCookie("CurrentPass"));
	var sUser = getCookie("CurrentUserName");
	var sOrg = getCookie("CurrentOrganisation");
	var bSaved = false;
	
	if (sUser == null || sUser.length == 0 ) bSaved = false;
	if (sPass == null || sPass.length == 0) bSaved = false;
	if (sOrg == null  || sOrg.length == 0)  bSaved = false;

	if (!bSaved)
	{
		sPass = "";
		sUser = "";
		sOrg = "";
	}

	oCtlPass.Input.value = sPass;
	oCtlUser.Input.value = sUser;
	oCtlOrg.Input.value = sOrg;
	
}


function checkScreenRes() {
	var strRes;
	strRes = screen.width + 'x' + screen.height;
	// Check the screen res and warn if it's less then
	// 1024x768 then 'try' to close the window...

	if (strRes == '800x600') {
	alert('A screen resolution of at least 1024x768 is required\n' + 
			'for the ContactTracker Web Interface to run properly.');      
	}
}  


function prepareLogin() {
	
	// get the textbox values
	var strOrgID	= document.all['orgid'].value;
	var strUserName = document.all['user'].value;
	var strPassword = document.all['pass'].value;			

	// check for valid organisation id
	if (strOrgID.length == 0)
	{
		alert("You must enter an organisation ID to continue");
		return;
	}
	
	// check for valid username
	if (strUserName.length == 0)
	{
		alert("You must enter a username to continue");
		return;
	}
	
	// check for valid password
	if (strPassword.length == 0)
	{
		alert("You must enter a password to continue");
		return;
	}
	
	// if we get this far then all fields have text so submit
	theForm.submit();
	
}
