﻿function fnLoginBox(poFillElement)
{
	loElement   = document.getElementById(poFillElement);
	loDropDown  = document.getElementById("frm_State");
	
	if (loElement.style.display == "block")
	{
		loElement.style.display = "none";
		
		if(loDropDown != null)
		{
		    loDropDown.style.display = "block";
		}
	}
	else
	{
		loElement.style.display = "block";
		
		if(loDropDown != null)
		{
		    loDropDown.style.display = "none";		
		}    
		    
		window.setTimeout("fnFillLogin('frm_UserName')",200)
	}
}

function fnFillLogin(poFocusElement)
{
	var loUserName = document.getElementById('frm_UserName');
	var loPassword = document.getElementById('frm_Password');
	var loRemember = document.getElementById('frm_RememberLogin');
	
	if (fnGetCookie("RememberUN") != null)
	{
		loUserName.value = fnGetCookie('RememberUN');
		loPassword.focus();
	}
	else 
	{
		loUserName.value = "";
		loUserName.focus();
	}
	
	loRemember.checked = (fnGetCookie("RememberLogin") == 0) ? false : true;
	loPassword.value = "";
}



function fnGetCookie(psName) 
{
	var liStart = document.cookie.indexOf(psName + "=" );
	var liLen = liStart + psName.length + 1;
		
	if ((!liStart) && (psName != document.cookie.substring(0, psName.length))){return null;}
	if (liStart== -1){return null;}
	var liEnd = document.cookie.indexOf(";", liLen);
	if (liEnd == -1 ){
		liEnd = document.cookie.length;}
	return unescape(document.cookie.substring(liLen, liEnd));
}

function fnDeleteCookie(psName, psPath, psDomain) 
{
	if (fnGetCookie(psName)) 
	{
		document.cookie = psName + "=" +
		((psPath) ? ";path=" + psPath: "") +
		((psDomain) ? ";domain=" + psDomain : "" ) +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}
}

function fnSetCookie(psName, psValue, piExpires, psPath, psDomain, psSecure) 
{
	var ldToday	= new Date();
	ldToday.setTime(ldToday.getTime());
	
	//piExpires = Days
	if (piExpires){piExpires = piExpires * 1000 * 60 * 60 * 24;}
	var ldExpiresDate = new Date(ldToday.getTime() + (piExpires) );

	document.cookie = psName + "=" + escape(psValue) +
					((piExpires ) ? ";expires="	+ ldExpiresDate.toGMTString() : "" ) + 
					((psPath) ? ";path=" + psPath : "" ) + 
					((psDomain) ? ";domain="	+ psDomain : "" ) +
					((psSecure) ? ";secure" : "" );

}


function fnEnterSubmit(psSubmit, psEvent, pbWhiteSite, extraParams) 
{
	// check if the key hit is "return," submit via the submit function if it is
	// Usage: pass the name of the button (poSubmit) and an event (psEvent, usually event) when calling this script
	var liCharacter;
		
	liCharacter = (psEvent && psEvent.which) ? psEvent.which : ((psEvent) ? psEvent.keyCode : null);	//determine whether to use the Netscape or IE key character
	
	if (liCharacter == 13 || psEvent == "enter")	// if the user hits return or clicks the button
	{
		if(psSubmit == 'GO')
		{
		    fnProcessLogin(pbWhiteSite);
		}
		else
		{
		    if(psSubmit == 'SearchMList')
		    {
		        g_fnWhiteSiteValidateSearchSubmit('SearchList','','','','','','','',extraParams,'');
		    }
		}

		// cancel the keystroke event
	    if (psEvent.preventDefault)
	    {
            psEvent.preventDefault();
        }
        psEvent.returnValue = false;
	}
}

function fnProcessLogin(pbWhiteSite)
{
	var loUserName			= document.getElementById('frm_UserName');
	var loPassword			= document.getElementById('frm_Password');
	var loRemember			= document.getElementById('frm_RememberLogin');
	var lsErrorMessage		= "";

	if (!loUserName.value || !loPassword.value) {
		loUserName.focus();
		alert(fnErrorNoLoginInfo());
		return false;
	}
	
	if (loRemember && loRemember.checked == true) {
        //IE 6 is blocking cookies: no good way around this 06.2007 BGM
		fnSetCookie("RememberUN", loUserName.value, 365, "/", "", "");	//UserName value
		fnSetCookie("RememberLogin", 1, 365, "/", "", "");
	} else {
		fnDeleteCookie("RememberUN", "/", "");
		fnSetCookie("RememberLogin", 0, 365, "/", "", "");
	}
	
	if (pbWhiteSite)
	{
	    var loLoginUserName     = document.frmLogin.UserName;
	    var loLoginPassword     = document.frmLogin.Password;	
    	
	        loLoginUserName.value = loUserName.value;
	        loLoginPassword.value = loPassword.value;
	        document.frmLogin.submit();
    }
    else
    {
        AjaxAuthenticationProxy.Login(loUserName.value, loPassword.value);
        
        // hide the login box no matter what
        fnLoginBox('loginBox');
    }
}

function fnErrorReturn(psDefaultMessage, psOverRideMessage)
{
	var lsReturn			= (psOverRideMessage != undefined) ? psOverRideMessage : psDefaultMessage;
	
		return lsReturn;
}

function fnErrorNoLoginInfo(psOverRideMessage)
{
	// returns an error message
	var lsDefaultMessage	= "Please fill in both username and password."; // default error message
	var lsReturn			= fnErrorReturn(lsDefaultMessage, psOverRideMessage);
	
		return lsReturn;
}

function g_fnWhiteSiteValidateSearchSubmit(psButtonClicked, psFormName, psFormFieldName_City, psFormFieldName_State, psFormFieldName_Zip, psFormFieldName_SearchCriteria, psFormFieldDefaultValue_City, psFormFieldDefaultValue_Zip, extraParams)
{
	// initialize and set values
	var lsFormFieldCityName					= (psFormFieldName_City) ? fnTrim(psFormFieldName_City) : 'frm_City';
	var lsFormFieldStateName				= (psFormFieldName_State) ? fnTrim(psFormFieldName_State) : 'frm_State';		
	var lsFormFieldZipName					= (psFormFieldName_Zip) ? fnTrim(psFormFieldName_Zip) : 'frm_Zip';
	var lsFormFieldSearchCriteriaName		= (psFormFieldName_SearchCriteria) ? fnTrim(psFormFieldName_SearchCriteria) : 'zipcode';
	var lsFormFieldCityValueDefaultValue 	= (psFormFieldDefaultValue_City) ? fnTrim(psFormFieldDefaultValue_City) : 'Enter City';
	var lsFormFieldZipValueDefaultValue 	= (psFormFieldDefaultValue_Zip) ? fnTrim(psFormFieldDefaultValue_Zip) : 'Enter Zip';
	var lsViewMapButtonName					= 'SearchMap';
	var lsButtonToTrack						= (psButtonClicked) ? psButtonClicked : null;
	var lsCriteriaValue;
	var lsCriteriaType;
	var lsDefaultButton						= 'SearchList';
	var lsErrorMessage						= "";
	var loFormFieldSearchCriteriaName		= document.getElementById(lsFormFieldSearchCriteriaName);
	var loFormFieldCityName 				= document.getElementById(lsFormFieldCityName);
	var loFormFieldStateName				= document.getElementById(lsFormFieldStateName);
	var loFormFieldZipName					= document.getElementById(lsFormFieldZipName);
	var lsVariables;
			
		//Begin Validation
		if ( (loFormFieldCityName.value == '' || loFormFieldCityName.value == lsFormFieldCityValueDefaultValue) && loFormFieldStateName.value == '' &&  (loFormFieldZipName.value == '' || loFormFieldZipName.value == lsFormFieldZipValueDefaultValue ) )
		{
			//No values entered
			lsErrorMessage += "- " + fnErrorNoCity() + "\n";
			lsErrorMessage += "- " + fnErrorNoState() + "\n";
		}
		else if (loFormFieldZipName.value != "" && loFormFieldZipName.value != lsFormFieldZipValueDefaultValue && (loFormFieldZipName.value.length != 5 || isNaN(loFormFieldZipName.value) ) )
		{
			//incorrect zip entered
			lsErrorMessage += "- " + fnErrorBadZipCode() + "\n";
		} 
		else if (loFormFieldCityName.value != '' && loFormFieldCityName.value != lsFormFieldCityValueDefaultValue && loFormFieldStateName.value == '')
		{
			//City entered but no state or zip
			lsErrorMessage += "- " + fnErrorNoState() + "\n";
		} 
		else if (loFormFieldStateName.value != '' && ( loFormFieldCityName.value == lsFormFieldCityValueDefaultValue || loFormFieldCityName.value == ''  ) && ( loFormFieldZipName.value == '' || loFormFieldZipName.value == lsFormFieldZipValueDefaultValue) ) 
		{	
			//State selected but no Zip or City
			lsErrorMessage += "- " + fnErrorNoCity() + "\n";
		}
		
		if (lsErrorMessage)
		{
			alert(lsErrorMessage);
		}
		else
		{					
            var rtNumber;
            var zip = loFormFieldZipName.value;
            var city = loFormFieldCityName.value;
            var state = loFormFieldStateName.value;

            var criteriaName = zip != null && zip != '' ? 'zip' : 'city';
            var criteriaValue = criteriaName == 'zip' ? zip : city + '~' + state;
			
			if (psButtonClicked == lsViewMapButtonName) 
			{
				lsVariables = "criteriaType=" + criteriaName + '&criteriaValue=' + criteriaValue + '&' + extraParams;
				fnForm('', '/MapSearch/MapSearch/MapSearch.aspx', '', lsVariables);
			}
			else
			{                
                if(zip != null && zip != '')
                {
                    city = '';
                    state = '';
                    rtNumber = BuildRTNumber(zip, '', '', 0);
                }
                else
                {
                    rtNumber = BuildRTNumber(zip, city + ', ' + state, '', 0);
                }
			
                lsVariables = 'pageNumD=1&id=0&zip=' + zip + '&city=' + city + '&state=' + state + '&db=R&srtfld=sdCreated&srtdir=DESC&type=D&RT=' + rtNumber + '&tabs=DTR&ItemsPer=25' + extraParams;
			
			    fnForm('', '/mapsearch/mapsearch/mapsearch.aspx', '', lsVariables);				
			}
			
			_hbLink(lsButtonToTrack,'right','0,0,30,30');
			return true;
		}
}

function BuildRTNumber(zip, city, county, iserID)
{
    var checksumString = zip + ',' + city + ',' + county + ',' + iserID;
    var checksum = 0;
    
    for(i=0; i < checksumString.length; i++)
    {
        checksum += checksumString.charCodeAt(i);
    }
    
    return checksum;
}

function ShowLoginErrorBox(loginBoxId, show)
{
    var loginBox = document.getElementById(loginBoxId);
    
    if(loginBox != null)
    {
        loginBox.style.display = show ? 'block' : 'none';
    }
}
