/*--------------------------------
	RememberLogin
		Save user login info to cookies if user check Remember Login checkbox.
--------------------------------*/
function RememberLogin(){
	var expDate = new Date();
	FixCookieDate(expDate); // Correct for Mac date bug - call only once for given Date object!
	expDate.setTime(expDate.getTime() + (24 * 60 * 60 * 1000) * 30); // 30 days from now

	var oneDay = new Date();
	FixCookieDate(oneDay); // Correct for Mac date bug - call only once for given Date object!
	oneDay.setTime(oneDay.getTime() + (24 * 60 * 60 * 1000) * 1); // 1 day from now
	
	var aPath=location.pathname;
	aPath=aPath.substring(0,aPath.lastIndexOf("/"));
	if(aPath=='')aPath="/";

	if (document.loginForm.persistent.checked) {
		DeleteCookie("UserName", aPath);
		DeleteCookie("Password", aPath);
		DeleteCookie("Server", aPath);	
		DeleteCookie("SSO", aPath);	
		SetCookie("UserName", document.loginForm.login.value, expDate, aPath);
		SetCookie("Password", document.loginForm.password.value, oneDay, aPath);  //password for one day
		SetCookie("Server", document.loginForm.server.value, expDate, aPath);
		SetCookie("Alias", document.loginForm.server.value, expDate, aPath); //Alias is same as Server?	
		for (var k=0; k<document.loginForm.SSO.length; k++){
			if(document.loginForm.SSO[k].checked){ 
				SetCookie("SSO", document.loginForm.SSO[k].value, expDate, aPath); 
			}
		}
	} else {
		DeleteCookie("UserName", aPath);
		DeleteCookie("Password", aPath);
		DeleteCookie("Server", aPath);
		DeleteCookie("SSO", aPath);
		SetCookie("Alias", document.loginForm.server.value, oneDay, aPath);		
	}
}

/* --------------------------------------------------------------
	SelectServerOnChange
		Handle event when user select a server from dropdown list
		based on SSO (Single Sign on) value.
			disabled 
			allowed	
			required 
-----------------------------------------------------------------*/
function SelectServerOnChange(o, login_type){
	var aSSO = gaServerSSO.split(",");
	for (var i=0; i<o.options.length; i++){
		if(o.options[i].selected){		
			gSSO = aSSO[i];
			var o=document.loginForm.SSO;
			switch(aSSO[i]){
				case SSO_DISABLED:
					EnableStandardLogin();
					hide("SSOTable");
					return;
				case SSO_REQUIRED:
					var bError=EnableTrustedLogin();
					var oDivMsg = document.getElementById("divMsg");
					if(oDivMsg.innerHTML!='')bError=true;  //if error occurs for first try, don't keep trying.
					//if only one server and no IIS configure error 
					//and if the page is not requested as "logout" - log directly in.					
					if(!bError && aSSO.length==1 && login_type!=LOGIN_LOGOUT){
						var oSubmit=document.loginForm.submit;
						oSubmit.click(); //very strange, document.loginForm.submit() doesn't work.
					}
					hide("SSOTable");					
					return;
				default: //SSO_ALLOWED
					EnableStandardLogin();
					show("SSOTable");
					o[0].disabled=false; //disable the Trusted login radio button.
					o[0].checked=false;
					o[1].disabled=false;
					o[1].checked=true;  //default 
					return;
			}
		}
	}
}
/* This one always show SSO radio buttons but enable/disable based on SSO value
function SelectServerOnChange(o){
	var aSSO = gaServerSSO.split(",");
	for (var i=0; i<o.options.length; i++){
		if(o.options[i].selected){			
			var o=document.loginForm.SSO;
			switch(aSSO[i]){
				case "disabled":
					EnableStandardLogin();
					o[0].disabled=true; //disable the Trusted login radio button.
					o[0].checked=false;
					o[1].disabled=false;//check the standdard login radio button.
					o[1].checked=true;  
					return;
				case "required":
					var bError=EnableTrustedLogin();
					//if only one server and no IIS configure error - log directly in.					
					if(!bError && aSSO.length==1){
						var oSubmit=document.loginForm.submit;
						oSubmit.click(); //very strange, document.loginForm.submit() doesn't work.
					}
					o[0].disabled=false; //disable the Trusted login radio button.
					o[0].checked=true;
					o[1].disabled=true;
					o[1].checked=false;  
					return;
				default: //allowed
					EnableStandardLogin();
					o[0].disabled=false; //disable the Trusted login radio button.
					o[0].checked=false;
					o[1].disabled=false;
					o[1].checked=true;  //default 
					return;
			}
		}
	}
}
*/

//disable and reset user name and password fields for Trusted Login only servers.
function EnableTrustedLogin(){		
	//check if IIS is configured allow Trusted login.
	document.loginForm.login.style.backgroundColor="#e6e6e6";
	document.loginForm.login.value='';
	document.loginForm.login.disabled=true;
	document.loginForm.password.style.backgroundColor="#e6e6e6";
	document.loginForm.password.value='';	
	document.loginForm.password.disabled=true;	
    EnableChangePwd(false);
    
	if(gLogonUser != ""){ //if logged in
		hide("divSSOMsg");
		return false;
	}else{ 
		//HandleSSO("disabled");//otherwise force it to disabled mode and show warning.
		show("divSSOMsg");
		return true;
	}
}

//enable the user name and password fields for standard login
function EnableStandardLogin(bChangePwd){ 
	document.loginForm.login.style.backgroundColor="#ffffff";
	document.loginForm.login.disabled=false;
	document.loginForm.password.style.backgroundColor="#ffffff";
	document.loginForm.password.disabled=false;
	EnableChangePwd(true);
	if(bChangePwd=='True'){
	    show("divChangePwd");
	    document.loginForm.changepwd.checked=true;
	}
	hide("divSSOMsg");
}

function EnableChangePwd(bEnable){
    document.loginForm.changepwd.checked=false;
    if(bEnable){
        document.loginForm.changepwd.disabled=false;
    }else{
        document.loginForm.changepwd.disabled=true;
        hide("divChangePwd");
    }
}
/*-------------------------------------------------------------------
	SSO_OnChange
		If SSO="allowed" then there should be radio buttons 
		allowing the user to change between trusted and non-trusted.
		If Trusted login selected - disable user name and password fields.
		Otherwise enable user name and password fields.
--------------------------------------------------------------------*/
function SSO_OnChange(o){
	if(o.value=="Y"){//Use Trusted
		EnableTrustedLogin();
	}else{//Use Standard
		EnableStandardLogin();
	}
}

/*--------------------------------
	installMSXML
		prompt user to install MSXML if it is not currently installed.
--------------------------------*/
function installMSXML(){
	var isIE5 = false;
	var userAgent = navigator.userAgent;
	var MSIEIndex = userAgent.indexOf("MSIE");
	var installMSXML;
	if (userAgent.indexOf("Win") != -1 && userAgent.indexOf("MSIE") != -1 && userAgent.substring((MSIEIndex + 5),(MSIEIndex + 6)) > 4){
	    isIE5 = true;
	}
	if(isIE5){
		var strXMLText = "<?xml version=\"1.0\"?><ROOT></ROOT>";
		var i=0;
		//test if msxml3.0 installed or not.
		try{
			var objXMLDOM = new ActiveXObject("Msxml2.DOMDocument.3.0");
			objXMLDOM.async=false;
			if (objXMLDOM.loadXML(strXMLText)){
				installMSXML = true;
			}
		}catch (e){
			installMSXML = window.confirm("You don't have MSXML parser installed in your machine. Do you want to install it?");
			if(installMSXML == true){
				document.write('<object id="MSXML3" classid="clsid:f5078f32-c551-11d3-89b9-0000f81fe221" codebase="msxml3.cab#version=8,00,7820,0" type="application/x-oleobject" STYLE="display: none"></object>');
				installMSXML = true;
			}else
				installMSXML = false;
		}
	}
	return(installMSXML);
}

/*------------------------------------------------------------
	canSubmit
		* handle install MSXML
		* handle user info cookies
		* decide which url to post 
			- Single Site: submit to its authenticate page.
			- Multisite:
			1) root - submit to subsite
			2) sub-site - submit to its authenticate page.
------------------------------------------------------------*/
function canSubmit(aForm, bMSXML, aIsMultiSite, aIsBaseLoginPage) {
	//should add field checking, pop error if username field is empty
	//		if(aForm.login.value == "") {
	//			alert("Please provide user name.");
	//			return(false);
	//		}
	//Prompt if login name is empty for SSO_DISABLED logins | allowed and user select Standard login.
	if((gSSO==SSO_DISABLED || (gSSO==SSO_ALLOWED && !aForm.login.disabled))&& aForm.login.value == ""){
		alert("Please provide Login name and Password.");
		return false;
	}

	//validate password change
    if(aForm.changepwd.value == 'on'){
        if(aForm.newpwd.value != aForm.newpwd1.value){
            alert("Confirm New Password is not the same as New Password.  \r\n Please try again.");    
            return false;
        } 
    }
    
	if(bMSXML){
		var MSXML = installMSXML();
		if(MSXML) SetCookie("MSXML", String(MSXML));
		else SetCookie("MSXML", "false");
	}else
		SetCookie("MSXML", "false");
		
	RememberLogin();
	
	if(aIsMultiSite=='True' && aIsBaseLoginPage=='True'){//if multisite, root director, submit to sub-site.
		aForm.action = aForm.server.value+'/'+aForm.defaultFile.value+'?login=authenticate';
	}else{
		aForm.action = aForm.defaultFile.value+'?login=authenticate';
	}
	return true;
}

/*------------------------------------------------------------
	LoadLoginForm
		*	get user name, password and server from cookies
		*	handle foucs:
				- if user name is empty -  focus on username.
				- otherwise, if password is empty - focus on password
				- If user name and password both filled out, focus on submit button.
------------------------------------------------------------*/		
function LoadLoginForm(login, password, server, serverlist, login_type, bChangePwd){
	//get login from post or from cookie
	if(login==''){
		login=GetCookie("UserName") + "";
		if(login=="null")login='';
	}
	if(login != ""){
		document.loginForm.login.value = login;
		document.loginForm.persistent.checked = true;
	}

	//get password from post or from cookie
	if(password==''){
		password=GetCookie("Password") + "";
		if(password=="null")password='';
	}
	if(password != "") document.loginForm.password.value = password;

	//get server
	if(server==''){
		server=GetCookie("Server") + "";
		if(server=="null")server='';
	}

	//Get server list and display the selected server
	var aServers = serverlist.split(",");
	if(server!=''){
		for(var i=0; i<aServers.length; i++){
			if(aServers[i] == server)
				document.loginForm.server.options[i].selected = true;
		}
	}	
	//Check if the selected server is SSO only (single sign on)
	SelectServerOnChange(document.loginForm.server,login_type);
	
	//get SSO
	var SSO=GetCookie("SSO") + "";
	if(SSO=="null")SSO='';
	if(SSO!=''){
		document.loginForm.persistent.checked = true;
		for(var i=0; i<document.loginForm.SSO.length; i++){
			if(document.loginForm.SSO[i].value == SSO){
				document.loginForm.SSO[i].checked = true;	
				var oTable = getItem("SSOTable");		
				if(oTable.style.display==""){
					if(SSO=="Y"){	//Use Trusted
						EnableTrustedLogin();
					}else{			//Use Standard
						EnableStandardLogin(bChangePwd);
					}
				}
			}
		}
	}

	//Handles focus
	if(document.loginForm.changepwd.checked)document.loginForm.newpwd.focus();
	else if (login == "" && !document.loginForm.login.disabled) document.loginForm.login.focus();
	else if (password != "" && !document.loginForm.password.disabled) loginForm.submit.focus();
	else if(!loginForm.password.disabled) loginForm.password.focus();
	else{ 
		//loginForm.submit.focus(); //this one doesn't work if submit is an image.
		var oSubmit = getItem("submit");
		if(oSubmit != null) oSubmit.focus();
	}
}

function passwordOnChange(oThis){
    if(oThis.checked){
       show("divChangePwd");
    }else{
        hide("divChangePwd");
    }
}
