//--------------------------------------------------+
// External dependancies                            |
//                                                  |
// logOutSessionID:						common.js   |
// strPort:								common.js   |
// strLegalNotice:						message.js  |
// strRootDir:							message.js  |
// strUnknownError						message.js  |
// strLoginTooManyAttempts				msglogin.js |
// strLoginSystemError					msglogin.js |
// strLoginMissingHost					msglogin.js |
// strLoginForm							msglogin.js |
// strExpiredUser						msglogin.js |
// strExpiredBoth						msglogin.js |
// strExpiredPassword					msglogin.js |
// strLibEnter							msglogin.js |
// strIE55DownloadDialogInstructions	msglogin.js |
// strIE6DownloadDialogInstructions		msglogin.js |
// strODWebSetupNotInstalled			msglogin.js |
// strODWebSetupPromptPartOne			msglogin.js |
// strODWebSetupPromptPartTwo			msglogin.js |
// Functions related to User Data		store.js|
//--------------------------------------------------+

// LOGIN CONSTANTS
var IS_ALLOWED = 0;
var INVALID_UNAME = 1;
var INVALID_PWORD = 2;
var EXPIRED_UNAME = 3;
var EXPIRED_PWORD = 4;
var EXPIRED_BOTH = 5;
var CANT_CREATE_SESSION = 6;
var TOO_MANY_ATTEMPTS = 7;
var UNMATCHED_DIVISION = 8;
var INVALID_ASSIGN = 9;
var INVALID_MACHINE_ID = 10;
var EXPIRED_USER = 99;

// LOGIN UPDATE CONSTANTS
var IS_UPDATED = 0;
var INVALID_OLD_LOGIN = 1;
var NOT_UNIQUE_NEW_LOGIN = 2;
var UNCHANGED_PASSWORD = 3;
var TOO_SHORT_NEW_LOGIN_OR_PASSWORD = 4;
var UNKNOWN = 5;

// Misc globals
var strSessionID = "";

// Techspan Vikrant Start 13 Oct 2005 for Splash Screen //  
var strSplashPath ="";
var strSplashTime ="";
// Techspan Vikrant end 13 Oct 2005 for Splash Screen //

var strOldLogin = "";
var gbToApp = false;
var strStartPage = "TT";
var g_nIEVer = 0.0;

// The following are to support hilite() in common.js
var globals = this;
var strHighlightColor = "orangered";

// ODWebUtil.dll constant
var UPDATE_NEEDED = 2;

var strLoginForm = ' \
		<table border="0" cellspacing="0" cellpadding="0" width="100%" id="idLoginTable"> \
			<tr><td>&nbsp;</td></tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr align="center"> \
				<td id="idLoginProduct" class="clsDesc">Product</td> \
			</tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr align="center"> \
				<td> \
					<table border="0" cellspacing="0" cellpadding="1" id="Table2"> \
						<tr> \
							<td class="clsLoginLabel" nowrap="true" align="right"> \
								User Name: \
							</td> \
							<td width="10"></td> \
							<td align="left"> \
								<input maxlength="100" size="24" title="Enter your User Name" id="idUserName" name="idUserName"> \
							</td> \
						</tr> \
						<tr> \
							<td class="clsLoginLabel" align="right"> \
								Password: \
							</td> \
							<td width="10"></td> \
							<td align="left"> \
								<input size="24" maxlength="100" title="Enter your Password" id="idPassword" type="password" onfocus="clearInput();" \
									name="idPassword"> \
							</td> \
						</tr> \
						<tr><td colspan="3">&nbsp;</td></tr> \
						<tr align="left"> \
							<td></td> \
							<td width="10"></td> \
							<td nowrap="true"><a href="#" title="Click here if you forgot your password" class="clsHelpLink" onclick="onClickForgotPassword()" \
									onmouseover="hilite(this)" onmouseout="lowlite(this)">Forgot Your Password?</a> \
							</td> \
						</tr> \
						<tr><td colspan="3">&nbsp;</td></tr> \
						<tr> \
							<td></td> \
							<td width="10"></td> \
							<td align="left" class="clsLoginLabel"> \
								<input title="Check to Save User Name and Password" type="checkbox" name="idSavePassword" \
									style="margin-left: -4px" onclick="AlertCookies(this);" id="idSavePassword"> \
								Save User Name and Password&nbsp;&nbsp; \
							</td> \
						</tr> \
						<tr><td colspan="3">&nbsp;</td></tr> \
			<tr> \
				<td colspan="2"></td>\
				<td align="left"> \
					<button title="Press this button to Log In" type="submit" onClick="logIn();" class="clsLoginBtn" \
						id="idLoginButton">Log In</button> \
						&nbsp;<button title="Press this button to Cancel" type="submit" onClick="cancelLogin();" class="clsCancelLoginBtn" \
						id="idLoginCancel">Cancel</button> \
				</td> \
			</tr> \
					</table> \
				</td> \
			</tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr><td>&nbsp;</td></tr> \
			<tr> \
				<td align="center"> \
					<span id="idErrorMsg" /> \
				</td> \
			</tr> \
		</table> \
';


function document.onreadystatechange()
{
	if (document.readyState == "complete")
	{
		if (typeof(document.all.idHelpLink) == "object")
		{
			document.all.idHelpLink.href = strHelpUrl;
		}
		
		if (typeof(document.body) == "object")
		{
			//document.body.scroll = "no" ;
		}

		if (bLibrary)
		{
			idContent.innerHTML = strLibEnter;
			//Authorization LIBRARY User with MACHINE ID.
			AuthorizationWithPC_KEY();		
		}
		else
		{
			document.all.fldShowAll.value = GetShowOption();
			//idContent.innerHTML = strAutoLogin;
			//Try login user by login and password from user data.						
			
			//****************
			// Techspan Aarti: CYMM : 25-10-2005				
			if (strUN != "" && strPW != "" )
			{
				CYMMlogIn(strUN,strPW);
			}			
			else
			{
				AutoLogin();
				FocusUserName();
			}
			// Techspan Aarti: CYMM : 25-10-2005
			//********************
						
			if (typeof(document.all.idLoginProduct) == "object")
			{
				document.all.idLoginProduct.innerHTML = "Please log in below if you are a subscriber.";
			}
		}
	}
}

function document.onselectstart()
{
	event.cancelBubble = true;
	var eSrc = event.srcElement;
	if (!((eSrc.tagName == "INPUT") || (eSrc.tagName == "TEXTAREA")))
    		event.returnValue = false;
}

function document.onmouseover()
{
	var objSrc = event.srcElement;
	if (!objSrc)
		return;

	var strTagName = objSrc.tagName;
	strTagName = strTagName.toUpperCase();

	var strClassName = objSrc.className;
	if (strClassName == "clsSuperLink")
	{
		objSrc.oldClass = strClassName;
		objSrc.className = "clsSuperLinkOver";
	}
}

function document.onmouseout()
{
	var objSrc = event.srcElement;
	if (!objSrc)
		return;

	//------------------------------------------------------------------------+
	// get tag & class names & make sure tag name is uppercase for comparison |
	// see comment in document.onmouseover for more information for why       |
	//------------------------------------------------------------------------+
	var strTagName = objSrc.tagName;
	strTagName = strTagName.toUpperCase();

	if (objSrc.className == "clsSuperLinkOver")
	{
		objSrc.className = objSrc.oldClass;
	}
}

function onClickForgotPassword()
{
	openResetPasswordPage(strProductForgotPasswordUrl, strProductForgotPasswordWndSettings);
}

//Authorization LIBRARY User with MACHINE ID.
function AuthorizationWithPC_KEY()
{
	g_nIEVer = isIE60Up();
	
	if (g_nIEVer < 6.0)
	{
		location.href = "/" + strRootDir + "/common/html/browserhelp.htm";
		return;
	}
	
	loadODWebStart(false);
}

//Set the autologin field for future use.
function SetAutoLogin(value)
{
	document.all.fldAutoLogin.value = value;
}

function AlertCookies(obj)
{
	//if (obj.checked)
	//	alert("Cookies must be enabled on your browser!");
}

//Reads user name and password from user data. 
//If login and password not null, try to login the user.
function AutoLogin()
{
	strOldLogin = new String(GetUserName());
	var strPassword = new String(GetPassword());
	
	if (strOldLogin == "" || strPassword == "")	
	{
		idContent.innerHTML = strLoginForm;
		return;
	}
	
	SetAutoLogin(1);
	
	logInDefault(strOldLogin, strPassword, true);
}

var strLoginForFail = "";
var strPasswordForFail = "";
var enterViaLoginForm = false;

//Users try to login using Login Form.
function logIn()
{

	//Aarti
	//If VT,YMM passthru is used
	if (strUN != "" || strPW != "") 
	{
		strOldLogin = document.all.idPassword.value.toLowerCase();
		var strPassword = document.all.idPassword.value.toLowerCase();
		strPW = document.all.idPassword.value.toLowerCase();
		
		strLoginForFail = strUN;
		strPasswordForFail = strPW;
	
	}
	else//End: Aarti	
	{		
		strOldLogin = document.all.idUserName.value.toLowerCase();
		var strPassword = document.all.idPassword.value.toLowerCase();

		strLoginForFail = document.all.idUserName.value;
		strPasswordForFail = document.all.idPassword.value;
	}
		
	if (!validateInputs())
		return;
	
	idLoginHelpLink.innerHTML = "" ;
	checkBoxChecked = document.all.idSavePassword.checked;
	idContent.innerHTML = strAutoLogin;
	enterViaLoginForm = true;	
	window.setTimeout("logInDefault('" + JSEncode(strOldLogin) + "', '" + JSEncode(strPassword) + "', false);", 1000);
}
var checkBoxChecked = true;

function cancelLogin()
{
	var loc = "/";
	document.location.href = loc;
}

//**************************
//Start: Techspan Aarti: CYMM : 25-10-2005
//Users try to login query string.
function CYMMlogIn(sUserName,sPwd)
{
	strOldLogin = sUserName;
	var strPassword = sPwd;

	strLoginForFail = sUserName;
	strPasswordForFail = sPwd;
	
	if (!validateInputs())
		return;
	
	enterViaLoginForm = false;
	window.setTimeout("logInDefault('" + JSEncode(strOldLogin) + "', '" + JSEncode(strPassword) + "', false);", 1000);
}
var checkBoxChecked = false;
//TechSpan:UN/PW Authentication
function DecryptUNPW(strUN,strPW)
{
	var strURL;
	var strQueryString;
	var sPublicExponent = '10001'; // e
	var sPublicKey = '9A43808E09FF067579D8C51EDF2D1631'; // n
	var sPrivateKey = "";
	var sEncryptedAuth;
	
	key = new RSAKeyPair(sPublicExponent,sPrivateKey,sPublicKey);
	strURL = "";
	strQueryString = "";
	
	//Auth string for UN
	var strAuth = "";
	strAuth = '<Auth>';
	strAuth = strAuth + strUN;	
	strAuth = strAuth + '</Auth>';	
	sEncryptedAuth = encryptedString(key, strAuth);
	strURL = strURL +  "&UN=" + sEncryptedAuth ;
	
	//Auth string for PW
	var strAuth = "";
	strAuth = '<Auth>';
	strAuth = strAuth + strPW;				
	strAuth = strAuth +  '</Auth>';
	sEncryptedAuth = encryptedString(key, strAuth);
	strURL = strURL +  "&PW=" + sEncryptedAuth ;
		
	return strURL;
}
//End:Techspan Aarti: CYMM : 25-10-2005
//***************

//Login procedure
function logInDefault(sLogin, strPassword, isAutoLogin)
{	
	strOldLogin = sLogin;
	
	g_nIEVer = isIE60Up();
	
	if (g_nIEVer < 6.0)
	{
		location.href = "/" + strRootDir + "/common/html/browserhelp.htm";
		return;
	}
	// create XMLDOM object
	var objXMLDOM = new ActiveXObject("Microsoft.XMLDOM");
	var objElem = objXMLDOM.createElement("LOGIN");
    objXMLDOM.appendChild(objElem);
    var objRoot = objXMLDOM.documentElement;
    
    // add UserName to XMLDOM object
    objElem = objXMLDOM.createElement("UNAME");
    objRoot.appendChild(objElem);
    objElem.text = strOldLogin;
    
    // add password to XMLDOM object
    objElem = objXMLDOM.createElement("PWORD");
    objRoot.appendChild(objElem);
    objElem.text = strPassword;
    
    //add option autologin.
    objElem = objXMLDOM.createElement("AUTOLOGIN");
    objRoot.appendChild(objElem);
    objElem.text = isAutoLogin ? "1" : "0";
    
     //add Machine ID.
    objElem = objXMLDOM.createElement("PC_KEY");
    objRoot.appendChild(objElem);
    objElem.text = GetPC_KEY();

	// add save password option to XMLDOM object	
    objElem = objXMLDOM.createElement("SAVE_PASSWORD");
    objRoot.appendChild(objElem);
	if (!isAutoLogin)
		objElem.text = checkBoxChecked ? "1" : "0";
	else
		objElem.text = "1";
	
	
	
	//Start: Techspan Aarti: CYMM : 25-10-2005					
	var strURL = "/" + strRootDir + "/common/asp/auth.asp" ;
	if (strVT != "" ||  strYR != "" ||  strMK != "" ||
		strMD != "" ||  strUN != "" ||  strPW != "" )
	{
		strURL =  strURL + "?";		
		strURL = strURL + "VT=" + strVT; 
		strURL = strURL + "&YR=" + strYR;
		strURL = strURL + "&MK=" + strMK;
		strURL = strURL + "&MD=" + strMD;		
		//strURL = strURL + "&UN=" + strUN;
		//strURL = strURL + "&PW=" + strPW;				
		if (strUN != "" &&  strPW != "" )
			strURL = strURL + DecryptUNPW(strUN,strPW);//UN/PW
	}	
	
	//End: Techspan Aarti: CYMM : 25-10-2005					
	// create XMLHTTP object and use it to send login info to server
	var xmlRequest = new ActiveXObject("microsoft.xmlhttp");
	xmlRequest.open("POST", strURL, false);
	xmlRequest.send(objXMLDOM);
	
	// save response from server & clean up
	var loginResponseXML = null;
	loginResponseXML = xmlRequest.responseXML;
	xmlRequest = null;
	   
	// retrieve login result from response XML
	objElem = loginResponseXML.selectSingleNode("//AUTHCODE");
	
	if (objElem == null)
	{
		if (isAutoLogin)
			showFailedAutoLogin();
		else
			showUnknownErr();
			
		return;
	}
	
	var objElemPC = loginResponseXML.selectSingleNode("//SAVE_PASSWORD");
		
	if (objElemPC != null)
	{
		//Get machine id and decrypt user name.
		var machine_id = objElemPC.selectSingleNode("//PC_KEY");
		var strUserNameDecr = objElemPC.selectSingleNode("//DECRYPT_USER_NAME").text;
		strOldLogin = strUserNameDecr;
		
		if (machine_id != null)
		{
			SetPC_INFO(machine_id.text, "", "");
		}
	}
	
	var nLoginResult = parseInt(objElem.text);
	
	if (isNaN(nLoginResult))
	{
		if (isAutoLogin)
			showFailedAutoLogin();
		else
			showUnknownErr();
		return;
	}
	else
	{
		if (nLoginResult != IS_ALLOWED 
			&& isAutoLogin)
		{
			//AutoLogin is not accessible.
			showFailedAutoLogin();
		}
		
		if (nLoginResult != IS_ALLOWED)
			showUnknownErr();
		
		switch (nLoginResult)
		{					
			case IS_ALLOWED:
				// retrieve session ID from response XML										
				objElem = loginResponseXML.selectSingleNode("//SESSION_ID");				
			
				if (objElem == null)
				{
					showUnknownErr();
					return;
				}
				
				strSessionID = objElem.text;
				
				// Techspan Vikrant start 13 Oct 2005 for splash screen //
				objElem = loginResponseXML.selectSingleNode("//SPLASH_PATH");
				strSplashPath = objElem.text;
				
				objElem = loginResponseXML.selectSingleNode("//SPLASH_TIME");
				strSplashTime = objElem.text;											
				// Techspan Vikrant end 13 Oct 2005 for Splash Screen //
				
				objElem = loginResponseXML.selectSingleNode("//SAVE_PASSWORD");
				
				//Save login info in user data on client PC.
				if (objElem != null)
				{
					var pcKey = objElem.selectSingleNode("//PC_KEY");
						
					var userName = objElem.selectSingleNode("//USER_NAME");
					var password = objElem.selectSingleNode("//PASSWORD");
					if (pcKey != null && userName != null && password != null)
						SetPC_INFO(pcKey.text, userName.text, password.text);
				}
				
				if (userName.text != "" && password.text != "")
					SetAutoLogin(1);

				loadODWebStart(false);
				
				break;
			case INVALID_UNAME:
				idErrorMsg.innerHTML = "The User Name you entered is invalid!  Please try again.";
				FocusUserName();
				break;
			case INVALID_PWORD:
				idErrorMsg.innerHTML = "The Password you entered is invalid!  Please try again.";
				idPassword.focus();
				break;				
			case EXPIRED_PWORD:
				// retrieve session ID from response XML
				objElem = loginResponseXML.selectSingleNode("//SESSION_ID");
				
				if (objElem == null)
				{
					showUnknownErr();
					return;
				}
				
				strSessionID = objElem.text;
				idContent.innerHTML = strExpiredPassword;
				idPassword.focus();
				
				break;
			case EXPIRED_UNAME:
			case EXPIRED_BOTH:
				// retrieve session ID from response XML
				objElem = loginResponseXML.selectSingleNode("//SESSION_ID");
				
				if (objElem == null)
				{
					showUnknownErr();
					return;
				}
				
				strSessionID = objElem.text;
				idContent.innerHTML = strExpiredBoth;
				FocusUserName();
				
				break;
				
			case CANT_CREATE_SESSION:
				idContent.innerHTML = strLoginSystemError;
				break;
			case TOO_MANY_ATTEMPTS:
				idContent.innerHTML = strLoginTooManyAttempts;
				break;
			case UNMATCHED_DIVISION:
				idErrorMsg.innerHTML = strUnmatchedDivision;
				break;
			case EXPIRED_USER:
				idErrorMsg.innerHTML = strExpiredUser;
				break;
			case INVALID_ASSIGN:
				idErrorMsg.innerHTML = strLicenseExceed;
				break;
			default:
				showUnknownErr();
		}
	}
}

//-------------------------------------------------------------------------------+
// isIE55Up used to return true/false but now returns a float that indicates the |
// version of IE if 5.5 or above and 0.0 if the browser is not 5.5 or above.     |
//-------------------------------------------------------------------------------+
function isIE60Up()
{

	var userAgt = navigator.userAgent.toLowerCase();
	var iePos = userAgt.indexOf("msie");
	var isIE = false;
	var minorVer = 0.0;
	if (isIE = (iePos != -1))
	{
		minorVer = parseFloat(userAgt.substring(iePos + 5, userAgt.indexOf(';', iePos)));
	}
	
	if (isIE && (minorVer >= 6.0))
	{
		// user agent string contains "msie 5.5" - should be IE5.5 BUT
		// opera will have "msie X.X" in its string, so check for it also
		var operaPos = userAgt.indexOf("opera");
		if (operaPos > -1)
			return (0.0);
		else
			return (minorVer);
	}	
	return(0.0);
}

function showFailedAutoLogin()
{
	var pc_key = GetPC_KEY();

	SetPC_INFO(pc_key, "", "");

	SetAutoLogin(0);
	idContent.innerHTML = strLoginForm;
	idErrorMsg.innerHTML = "User Authorization Failed";
}

function showUnknownErr()
{
	idContent.innerHTML = strLoginForm;
	idErrorMsg.innerHTML = strUnknownError;
	clearAllInputs();
	document.all.idUserName.value = strLoginForFail;
	document.all.idPassword.value = strPasswordForFail;
	
	if (typeof(document.all.idLoginProduct) == "object")
	{
		document.all.idLoginProduct.innerHTML = "Please log in below if you are a subscriber.";
	}

	
	FocusUserName();
}

function FocusUserName()
{
	if (document.all.idUserName != null && document.all.idUserName.type == "text")
		document.all.idUserName.focus();
}

function clearInput()
{
	var oSrc = event.srcElement;
	if (oSrc.tagName == "INPUT")
		oSrc.value = "";
}

function changeBoth()
{
	if (validateInputs())
	{
		var strUser = idUserName.value.toLowerCase();
		var strPassword = idPassword.value.toLowerCase();
		var strConfirm = idPasswordConfirm.value.toLowerCase();
		if (strOldLogin == strUser)
		{
			idErrorMsg.innerHTML = "The New User Name is not changed. Please try again.";
			FocusUserName();
		}
		else if (strPassword != strConfirm)
		{
			idErrorMsg.innerHTML = "The confirmation password does not match the password.  Please try again.";		
			idPassword.focus();
			idPasswordConfirm.value = "";
		}
		else
		{
			//store new login info	
			updateLogin(strUser, strPassword);
		}
	}
}

function changePassword()
{
	if (validateInputs())
	{
	var strPassword = idPassword.value.toLowerCase();
	var strConfirm = idPasswordConfirm.value.toLowerCase();
	if (strPassword != strConfirm)
	{
		idErrorMsg.innerHTML = "The confirmation password does not match the password.  Please try again";		
		idPassword.focus();
		idPasswordConfirm.value = "";
	}
	else
	{
		//store new password
		updateLogin(strOldLogin, strPassword);
	}
}
}

function updateLogin(strUserName, strPassword)
{
	// create XMLDOM object
	var objXMLDOM = new ActiveXObject("Microsoft.XMLDOM");
	var objElem = objXMLDOM.createElement("UPDATE");
    objXMLDOM.appendChild(objElem);
    var objRoot = objXMLDOM.documentElement;
    
    // add old UserName to XMLDOM object
    objElem = objXMLDOM.createElement("OLDLOGIN");
    objRoot.appendChild(objElem);
    objElem.text = strOldLogin;
    
    // add new UserName to XMLDOM object
    objElem = objXMLDOM.createElement("NEWLOGIN");
    objRoot.appendChild(objElem);
    objElem.text = strUserName;
    
    // add password to XMLDOM object
    objElem = objXMLDOM.createElement("PWORD");
    objRoot.appendChild(objElem);
    objElem.text = strPassword;
    
	// create XMLHTTP object and use it to send updated login info to server
	var xmlRequest = new ActiveXObject("microsoft.xmlhttp");
	xmlRequest.open("POST", "/" + strRootDir + "/common/asp/auth.asp", false);
	xmlRequest.send(objXMLDOM);
	
	// save response from server & clean up
	var updateResponseXML = null;
	updateResponseXML = xmlRequest.responseXML;
	xmlRequest = null;
   
	// retrieve update result from response XML
	objElem = updateResponseXML.selectSingleNode("//UPDATECODE");
	if (objElem == null)
	{
		showUnknownErr();
		return;
	}
	var nUpdateResult = parseInt(objElem.text);
	if (isNaN(nUpdateResult))
	{
		showUnknownErr();
		return;
	}
	
	switch (nUpdateResult)
	{
		case IS_UPDATED:
			loadODWebStart(false);
			break;
		case INVALID_OLD_LOGIN:
			idContent.innerHTML = strLoginForm;
			showUnknownErr();
			break;
		case NOT_UNIQUE_NEW_LOGIN:
			idErrorMsg.innerHTML = "The UserName you have selected is not available.&nbsp;&nbsp;Please try again.";
			clearAllInputs();
			FocusUserName();
			break;
		case UNCHANGED_PASSWORD:
			idErrorMsg.innerHTML = "The Password you entered has not been changed.&nbsp;&nbsp;Please try again.";
			idPassword.focus();
			idPasswordConfirm.value = "";
			break;
		case TOO_SHORT_NEW_LOGIN_OR_PASSWORD:
			idErrorMsg.innerHTML = "The UserName or Password you have selected must be at least 6 characters.";
			break;
		case UNKNOWN:
			showUnknownErr();
	}
}

function clearAllInputs()
{
	var collInputs = document.getElementsByTagName("INPUT");
	var len = collInputs.length;
	for (var i = 0; i < len; i++)
	{
		// Ignore the session ID hidden input
		if (collInputs[i].name != "nmSIDInfo")
			collInputs[i].value = "";
	}
}

function validateInputs()
{
	var collInputs = document.getElementsByTagName("INPUT");
	var len = collInputs.length;
	for (var i = 0; i < len; i++)
	{		
		// Ignore the session ID hidden input
		//if ((collInputs[i].name != "fldShowAll") && (collInputs[i].name != "nmSIDInfo") && (collInputs[i].value == "") 
		//		&& (collInputs[i].name != "idSavePassword") && (collInputs[i].name != "fldAutoLogin"))
		if ((collInputs[i].name != "fldShowAll") && (collInputs[i].name != "nmSIDInfo") && 
			(collInputs[i].name != "idSavePassword") && (collInputs[i].name != "fldAutoLogin") && 
			(collInputs[i].name != "VT") && (collInputs[i].name != "YR") && 
			(collInputs[i].name != "MK") && (collInputs[i].name != "MD") && 
			(collInputs[i].name != "UN") && (collInputs[i].name != "PW") && 
			(collInputs[i].value == ""))
		{
			idErrorMsg.innerHTML = "Unable to proceed because one or more fields are empty.&nbsp;&nbsp;Please try again.";
			collInputs[i].focus();
			return(false);
		}
	}
	return(true);	
}

//------------------------------------------------------------------------+
// Entering the ODWeb site is broken into 2 functions:                    |
//
// loadODWebStart:
// Is called in multiple areas within this JS file. Initiates a check on  |
// the ODWebUtil.DLL version number installed on the client machine. The  |
// check is performed by another file, checkdll.htm, so that the DLL can  |
// be removed from memory when the check is finished by closing the       |
// checkdll window. At this time there is no way to remove the DLL from   |
// memory using JScript. So the workaround is to have another window do   |
// it. When checkdll is finished, it writes the result of the check to an |
// invisible SELECT element added to the login page in loadODWebStart.    |
// checkdll then fires the onchange event on the same SELECT element to   |
// signal to the login page that the check is finished.                   |
//                                                                        |
// loadODWebEnd:                                                          |
// This is the onchange handler for the SELECT element created in         |
// loadODWebStart.  When checkdll fires the onchange event, it invokes    |
// this function, which finishes up by evaluating the result of the DLL   |
// version check stashed in the SELECT element and either prompts the     |
// user again to install the DLL or loads the ODWeb site.                 |
//------------------------------------------------------------------------+

function loadODWebStart()
{
	// Clear the error message SPAN
	var objErrMsgSpan = document.getElementById("idErrorMsg");
	if (objErrMsgSpan)
		objErrMsgSpan.innerHTML = "";
	
	// Try to find the SELECT element
	var objResultSelect = document.getElementById("idResultSelect");
	
	if (objResultSelect == null)
	{
		// Add the SELECT element if not present
		var strResultHTM = "<select id='idResultSelect' onchange='loadODWebEnd()'><option value='0' selected>UNKNOWN<option value='1'>NO UPDATE<option value='2'>UPDATE NEEDED</select>";		
		document.body.innerHTML += strResultHTM;
	}
	
	// Open a new window for checkdll.htm, which will perform the DLL version check
	//var wndCheckVer = window.open("/" + strRootDir + "/common/html/checkdll.htm", "", "height=100,width=100,top=1500,left=1500");
	//wndCheckVer.blur();
	//If enter via login form then timout 0, else timeout is 1 minute.
	window.setTimeout("loadODWebEnd();", enterViaLoginForm ? 0 : 1000);
}

function loadODWebEnd()
{
		document.all.nmSIDInfo.value = strSessionID;

		if (!bLibrary)
		{
			//---------------------------------------------------------+
			// Construct absolute URL for form's action attribute when |
			// logging in so that we can switch from https to http     |
			// Use host property to get server name because it will    |
			// contain any domain, host (server) name & port info.     |
			//---------------------------------------------------------+
			var strHost = new String(document.location.host);
			if (strHost == "")
			{
				idErrorMsg.innerHTML = strLoginMissingHost;
				clearAllInputs();
				return;
			}

			strHost = strHost.split(":")[0]; // Remove port if it exists and use the one below...
			strHost += strPort;

			var strURL = "http://<servername>/" + strRootDir + "/" + strStartPage + ".asp";
			var re = /<servername>/;
			strURL = strURL.replace(re, strHost);			
			if (strURL == "http://<servername>/" + strRootDir + "/" + strStartPage + ".asp")
			{
				idErrorMsg.innerHTML = strMissingHost;
				clearAllInputs();
				return;
			}
			//Aarti
			//Start: Techspan Aarti: CYMM : 25-10-2005				
			if (strVT != "" ||  strYR != "" ||  strMK != "" ||
				strMD != "" ||  strUN != "" ||  strPW != "" )
			{	
				strURL =  strURL + "?";
				strURL = strURL + "VT=" + strVT; 
				strURL = strURL + "&YR=" + strYR;
				strURL = strURL + "&MK=" + strMK;
				strURL = strURL + "&MD=" + strMD;
				//strURL = strURL + "&UN=" + strUN;
				//strURL = strURL + "&PW=" + strPW;		
				if (strUN != "" &&  strPW != "" )
					strURL = strURL + DecryptUNPW(strUN,strPW);//UN/PW
			}		
			//End: Techspan Aarti: CYMM : 25-10-2005				
			document.all.idSIDForm.action = strURL;
			
		}


		//---------------------------------------------------------------------------+
		// Setting this to true indicates that the user is headed to TT/pcmain.asp |
		// This is important for libraries because if they go anywhere but           |
		// TT/pcmain.asp from the welcome screen, their session will be logged out |
		//---------------------------------------------------------------------------+
		gbToApp = true;
		
		// Set cursor to hourglass prior to posting as it can take awhile
		document.body.style.cursor = "wait";
		
		// Techspan Vikrant start 13 Oct 2005 for Splash Screen //
		//var strHTMLHomePage = "<DIV class='clsLoginLabel' align='center' valign='center' style='width:100%; POSITION:absolute; '><IMG id='SplashImg' border='0' src='"+ strSplashPath +"'></DIV>";	
		var strHTMLHomePage = "<table width=100% height=100%><tr><td align=center><TABLE align=center cellspacing=0 cellpadding=0 bgcolor=#FFFFFF ID=idTTTable><TR height=10 align=center><TD colspan=2><IMG id='SplashImg' border='0' src='"+ strSplashPath +"'></TD></TR></TABLE></td></tr></table>";
		document.body.innerHTML = strHTMLHomePage + document.all.idFormToSubmit.innerHTML;		
		setTimeout("document.all.idSIDForm.submit()",strSplashTime);		
		// Techspan Vikrant end 13 Oct 2005 for Splash Screen //
			
		//document.body.innerHTML = strLoadingHomePage + document.all.idFormToSubmit.innerHTML;
		//document.all.idSIDForm.submit();
}

function window.onunload()
{
	if ((bLibrary) && (!gbToApp))
	{		
		logOutSessionID(strSessionID);
	}
}

function openResetPasswordPage(strForgotPasswordURL, strWndSettings)
{
	window.open(strForgotPasswordURL, "wndResetPass", strWndSettings);
}

function JSEncode(str)
{
	str = str.replace(/\\/g, "\\\\");
	str = str.replace(/\'/g, "\\'");
	str = str.replace(/\"/g, "\\\"");
	str = str.replace(/</g,"&lt;",1,-1,1);
	str = str.replace(/>/g,"&gt;",1,-1,1);
	str = str.replace(/\n/g, "\\n");
	str = str.replace(/\r/g, "\\r");
 
	return str;
}


 
