//*****************************************************************************************************
//This funtion loads the States, Month and Year information to the respective select boxes.
// Input Params  : None
// Output Params : None
//*****************************************************************************************************
function load(){
	loadYear(document.frm.cboMoveInYear);
	loadYear(document.frm.cboMoveOutYear);
	loadMonths(document.frm.cboMoveInMonth);
	loadMonths(document.frm.cboMoveOutMonth);
	loadStates(document.frm.cboState);
	loadStates(document.frm.cboMoveInState);
}

function replaceTextarea()
{
var txtArea = document.frm.txtQuestions.value;
var sComments = document.getElementById('Textarea1').innerHTML;
	//txtArea = '';
	sComments = "";
//alert(txtArea);
txtArea = "What the heck!";
	//txtArea.replace( "HREF", "" );
//return false;
}

//*****************************************************************************************************
//This funtion validates the data entered by the user before submitting to the database. 
// Input Params  : None
// Output Params : None
//*****************************************************************************************************

function submitform(){




var tString = document.frm.txtFirstName.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"First Name\".');
		return;
	}
	else{
		if(!validPersonName('First Name', tString)){return;}
	}

	tString = '';
	tString = document.frm.txtLastName.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Last Name\".');
		return;
	}
	else{
		if(!validPersonName('Last Name', tString)){return;}
	}
	
	tString = '';
	tString = document.frm.txtCompany.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Company Name\".');
		return;
	}
	else{
		if(!validPersonName('Company Name', tString)){return;}
	}

	/*tString = '';
	tString = document.frm.txtAddress1.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Address\".');
		return;
	}
	else{
		if(!validSteetAddress(tString)){return;}
	}

	tString = '';
	tString = document.frm.txtCity.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"City\".');
		return;
	}
	else{
		if(!validPersonName('City', tString)){return;}
	}
	
	tString = '';
	tString = document.frm.cboState[document.frm.cboState.selectedIndex].value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"State\".');
		return;
	}
	
	tString = '';
	tString = document.frm.txtZipCode.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Zip Code\".');
		return;
	}
	else{
		if(!validUSZipCode(tString)){return;}
	}
	*/
	
	tString = '';
	tString = document.frm.txtMoveInCity.value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Destination City\".');
		return;
	}
	else{
		if(!validPersonName('Destination City', tString)){return;}
	}
	
	tString = '';
	tString = document.frm.cboMoveInState[document.frm.cboMoveInState.selectedIndex].value;
	if(tString == '' || tString.length ==0 || nullString(tString)){
		alert('Please enter your \"Destination State\".');
		return;
	}
	var gPhone1 = false;
	var gPhone2 = false;
	
	tString = '';
	tString = document.frm.txtPhone1AreaCode.value + document.frm.txtPhone1Prefix.value + document.frm.txtPhone1Phone.value;
	if(tString.length == 10 && tString.indexOf(' ') == -1 && !isNaN(tString)){
		gPhone1 = true;
	}
	
	tString = '';
	tString = document.frm.txtPhone2AreaCode.value + document.frm.txtPhone2Prefix.value + document.frm.txtPhone2Phone.value;
	if(tString.length == 10 && tString.indexOf(' ') == -1 && !isNaN(tString)){
		gPhone2 = true;
	}

	if(!gPhone1 && !gPhone2){
		alert('Please enter \"Work Phone\" OR \"Home Phone\".');
		return;
	}

	tString = '';
	tString = document.frm.txtEMail.value;
	if(tString == '' || tString.length ==0 || nullString(tString) || !isNaN(tString)){
		alert('Please enter your \"E-mail\".');
		return;
	}
	else{
		if(!validEMail()){return;}
	}
	document.frm.submit();
}

//*****************************************************************************************************
//This funtion validates a person's name (first, last, or both) in any letter case and will 
//filter out many incorrect name formats (especially numerics and invalid special characters). 
// Output Params : Boolean -- True if the email is in the correct format -- false when the email format is incorrect
//*****************************************************************************************************
function validPersonName(sFieldName, sFieldValue){
var reTextPattern = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/

    if(reTextPattern.test(sFieldValue))
		{return true;}
    else{
		var strMessage = 'The ' + sFieldName + ' field you entered contains an invalid character.';
		alert(strMessage);
		return false;
	}
}

//*****************************************************************************************************
//This funtion validates any characters that are NOT numerical or alphabetic character
// Output Params : Boolean -- True if the email is in the correct format -- false when the email format is incorrect
//*****************************************************************************************************
function validTextField(sFieldName, sFieldValue){
var reTextPattern = /^[A-Za-z0-9]+(([\'\,\.\- ][A-Za-z0-9 ])?[A-Za-z0-9]*)*$/

    if(reTextPattern.test(sFieldValue))
		{return true;}
    else{
		var strMessage = 'The ' + sFieldName + ' field you entered contains an invalid character. \n Please enter only letters or numbers".';
		alert(strMessage);
		return false;
	}
}

//*****************************************************************************************************
//This funtion validates the e-mail address entered by the user. 
// Input Params  : none
// Output Params : Boolean -- True if the email is in the correct format -- false when the email format is incorrect
//*****************************************************************************************************
function validEMail(){
//var reMailPattern = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
var reMailPattern = /^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/
var strMessage = 'The e-mail address you entered is invalid. \n Please enter a valid e-mail address \"Username@Domain.com\".';
var tString = document.frm.txtEMail.value;

    if(reMailPattern.test(tString))
		{return true;}
    else{
		alert(strMessage);
		return false;
	}
}

//*****************************************************************************************************
//This funtion validates a person's name (first, last, or both) in any letter case and will 
//filter out many incorrect name formats (especially numerics and invalid special characters). 
// Input Params  : none
// Output Params : Boolean -- True if the email is in the correct format -- false when the email format is incorrect
//*****************************************************************************************************
function validUSZipCode(sFieldValue){
var reTextPattern = /^(\d{5}-\d{4}|\d{5})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d)$/

    if(reTextPattern.test(sFieldValue))
		{return true;}
    else{
		var strMessage = 'The zip code you entered has an invalid format.';
		alert(strMessage);
		return false;
	}
}

//*****************************************************************************************************
//This funtion validates a person's name (first, last, or both) in any letter case and will 
//filter out many incorrect name formats (especially numerics and invalid special characters). 
// Input Params  : none
// Output Params : Boolean -- True if the email is in the correct format -- false when the email format is incorrect
//*****************************************************************************************************
function validSteetAddress(sFieldValue){
var reTextPattern = /^[a-zA-Z0-9\s.\-]+$/

    if(reTextPattern.test(sFieldValue))
		{return true;}
    else{
		var strMessage = 'The street address you entered has an invalid format.';
		alert(strMessage);
		return false;
	}
}

function formatString(tStr){
var tString = tStr;
var tReplaceString = "";
var tLength = tString.length;
for(var iPos = 0;iPos <	tLength;iPos++){
	if(tString.charAt(iPos) == "'"){
		tReplaceString = tReplaceString + "''";
	}
	else{
		tReplaceString = tReplaceString + tString.charAt(iPos);
	}
}
	return tReplaceString;
}

//*****************************************************************************************************
//This funtion checks for a null string. 
// Input Params  : String to be checked for.
// Output Params : Boolean -- True, if the string is null -- false, if the string is not null
//*****************************************************************************************************

function nullString(tStr){
var tString = tStr;
var tReplaceString = "";
var tLength = tString.length;
for(var iPos = 0;iPos <	tLength;iPos++){
	if(tString.charAt(iPos) == " "){
		tReplaceString = tReplaceString + "";
	}
	else
	{
		tReplaceString = tReplaceString + tString.charAt(iPos);
	}
}
	if(tReplaceString.length == 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

//*****************************************************************************************************
//This funtion Loads the days to the combo box, based on the month selected.
// Input Params  : None
// Output Params : None
//*****************************************************************************************************
function loadDays(iMonth,obj){
var iLength =  obj.length - 1;
var iDays = 0;

	for(var j = iLength; j > 0; j--){
	    obj.remove(j);
	}	

	if(iMonth == 1 || iMonth == 3 || iMonth == 5 || iMonth == 7 || iMonth == 8 || iMonth == 10 || iMonth == 12){iDays = 31;}
	if(iMonth == 4 || iMonth == 6 || iMonth == 9 || iMonth == 11){iDays = 30;}
	if(iMonth == 2){
		var tDate = new Date();
		var tYear = tDate.getYear();
		    tYear = parseInt(tYear)%4;
		if(tYear == 0){iDays = 29;}
		else{iDays = 28;}
	}
	if(iMonth == 0){
		var	oOption = new Option('Day','0');
	    obj.options[0] =oOption;
	    return;
	}

	for(var j = 1; j <= iDays; j++){
	    var	oOption = new Option(j,j);
	    obj.options[j] =oOption;
	}	
}

//*****************************************************************************************************
//This function loads the years to the combo box . 
// Input Params  : None.
// Output Params : None.
//*****************************************************************************************************
function loadYear(obj)
{
	var today = new Date();
	var tyear = today.getYear();
	var iLen = (String(tyear).length);
	tyear = eval(2010+parseInt(String(tyear).substring(iLen-1,iLen)));
	
	for(var j = 0; j < 10; j++){
	    var	oOption = new Option(tyear,tyear);
	    obj.options[j+1] =oOption;
	    tyear = eval(tyear + 1);	    
	}	
}

//*****************************************************************************************************
//This function limits the user from typing only numeric values to the control.
// Input Params  : None.
// Output Params : None.
//*****************************************************************************************************
function numericsOnly(){
	if(window.event.keyCode <48 || window.event.keyCode > 59){
		window.event.keyCode =0;
		return;
	}
}

//*****************************************************************************************************
//This function loads the object with the calendar months.
// Input Params  : Object to which the data needs to be added.
// Output Params : None.
//*****************************************************************************************************
function loadMonths(obj){
	var	oOption = new Option("January",1);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("February",2);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("March",3);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("April",4);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("May",5);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("June",6);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("July",7);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("August",8);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("September",9);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("October",10);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("November",11);
	obj.options[obj.length] = oOption;
	var	oOption = new Option("December",12);
	obj.options[obj.length] = oOption;	
}

//*****************************************************************************************************
//This funtion loads the select box with the US state names. 
// Input Params  : Object to which the data needs to be loaded.
// Output Params : None
//*****************************************************************************************************
function loadStates(obj){
		var oOption = new Option("AL","AL");
		obj.options[obj.length] = oOption;
		var oOption = new Option("AK","AK");
		obj.options[obj.length] = oOption;
		var oOption = new Option("AZ","AZ");
		obj.options[obj.length] = oOption;
		var oOption = new Option("AR","AR");
		obj.options[obj.length] = oOption;
		var oOption = new Option("CA","CA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("CO","CO");
		obj.options[obj.length] = oOption;
		var oOption = new Option("CT","CT");
		obj.options[obj.length] = oOption;
		var oOption = new Option("DE","DE");
		obj.options[obj.length] = oOption;
		var oOption = new Option("DC","DC");
		obj.options[obj.length] = oOption;
		var oOption = new Option("FL","FL");
		obj.options[obj.length] = oOption;
		var oOption = new Option("GA","GA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("HI","HI");
		obj.options[obj.length] = oOption;
		var oOption = new Option("ID","ID");
		obj.options[obj.length] = oOption;
		var oOption = new Option("IL","IL");
		obj.options[obj.length] = oOption;
		var oOption = new Option("IN","IN");
		obj.options[obj.length] = oOption;
		var oOption = new Option("IA","IA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("KS","KS");
		obj.options[obj.length] = oOption;
		var oOption = new Option("KY","KY");
		obj.options[obj.length] = oOption;
		var oOption = new Option("LA","LA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("ME","ME");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MD","MD");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MA","MA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MI","MI");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MN","MN");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MS","MS");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MO","MO");
		obj.options[obj.length] = oOption;
		var oOption = new Option("MT","MT");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NE","NE");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NV","NV");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NH","NH");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NJ","NJ");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NM","NM");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NY","NY");
		obj.options[obj.length] = oOption;
		var oOption = new Option("NC","NC");
		obj.options[obj.length] = oOption;
		var oOption = new Option("ND","ND");
		obj.options[obj.length] = oOption;
		var oOption = new Option("OH","OH");
		obj.options[obj.length] = oOption;
		var oOption = new Option("OK","OK");
		obj.options[obj.length] = oOption;
		var oOption = new Option("OR","OR");
		obj.options[obj.length] = oOption;
		var oOption = new Option("PA","PA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("RI","RI");
		obj.options[obj.length] = oOption;
		var oOption = new Option("SC","SC");
		obj.options[obj.length] = oOption;
		var oOption = new Option("SD","SD");
		obj.options[obj.length] = oOption;
		var oOption = new Option("TN","TN");
		obj.options[obj.length] = oOption;
		var oOption = new Option("TX","TX");
		obj.options[obj.length] = oOption;
		var oOption = new Option("UT","UT");
		obj.options[obj.length] = oOption;
		var oOption = new Option("VT","VT");
		obj.options[obj.length] = oOption;
		var oOption = new Option("VI","VI");
		obj.options[obj.length] = oOption;
		var oOption = new Option("VA","VA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("WA","WA");
		obj.options[obj.length] = oOption;
		var oOption = new Option("WV","WV");
		obj.options[obj.length] = oOption;
		var oOption = new Option("WI","WI");
		obj.options[obj.length] = oOption;
		var oOption = new Option("WY","WY");
		obj.options[obj.length] = oOption;
}

function mapQuestDir(){

var tFromAddress = document.frm.txtFromAddress.value;
var tFromCity = document.frm.txtFromCity.value;
var tFromState = document.frm.cboFromState.value;
var tFromZip  = document.frm.txtFromZip.value;

var tToAddress = document.frm.txtToAddress.value;
var tToCity = document.frm.txtToCity.value;
var tToState = document.frm.cboToState.value;
var tToZip  = document.frm.txtToZip.value;

if((tFromZip.length == 0 || tFromZip.length < 5) || (tFromCity.length == 0 && tFromState.length == 0)){
		alert('Please enter a valid staring point.');
		return;
} 

if((tToZip.length == 0 || tToZip.length < 5) || (tToCity.length == 0 && tToState.length == 0)){
		alert('Please enter a valid destination.');
		return;
} 

	var tLocation = '';
	tFromAddress = parseString(tFromAddress);
	tLocation += 'ADDR_ORIGIN=' + tFromAddress + '&';
	tFromCity = parseString(tFromCity);
	tLocation += 'CITY_ORIGIN=' + tFromCity + '&';
	tLocation += 'STATE_ORIGIN=' + tFromState + '&';
	tFromZip = parseString(tFromZip);
	tLocation += 'ZO=' + tFromZip + '&';
	
	tToAddress = parseString(tToAddress);
	tLocation += 'ADDR_DESTINATION=' + tToAddress + '&';
	tToCity = parseString(tToCity);
	tLocation += 'CITY_DESTINATION=' + tToCity + '&';
	tLocation += 'STATE_DESTINATION=' + tToState + '&';
	tToZip = parseString(tToZip);
	tLocation += 'ZD=' + tToZip + '&';
	
	
	for(i=0; i< document.frm.results_display_mode.length;i++){
		if(document.frm.results_display_mode[i].checked)
		{tLocation += 'results_display_mode=' + document.frm.results_display_mode[i].value + '&';}
	}
	
	for(i=0; i< document.frm.DetailedNarr.length;i++){
		if(document.frm.DetailedNarr[i].checked)
		{tLocation += 'DetailedNarr=' + document.frm.DetailedNarr[i].value + '&';}
	}
	
	if(document.frm.avoid_lmtd_access.checked){tLocation += 'avoid_lmtd_access=1&';}
	if(document.frm.avoid_toll_roads.checked){tLocation += 'avoid_toll_roads=1&';}
	if(document.frm.avoid_ferry.checked){tLocation += 'avoid_ferry=1&';}
	
	window.open('/mapquest/scripts/mqtripplus.cgi?' + tLocation,null,'top=100,left=100,height=500px,width=600px,status=yes,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars =yes');

}

function parseString(tString){
var tResult = tString;
	tResult =  replaceSubstring(tResult,' ','+');
	tResult = replaceSubstring(tResult,'>','%3E');
	tResult = replaceSubstring(tResult,'<','%3C');
	tResult = replaceSubstring(tResult,'&','%26');
	tResult = replaceSubstring(tResult,'$','%24');
	tResult = replaceSubstring(tResult,'/','%2F');
	tResult = replaceSubstring(tResult,'=','%3D');
	tResult = replaceSubstring(tResult,'?','%3F');
	return tResult;	
}	

function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } 
   else { 
		// String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
		var midStrings = new Array("~", "`", "_", "^", "#");
		var midStringLen = 1;
		var midString = "";
		// Find a string that doesn't exist in the inputString to be used as an "inbetween" string
		while (midString == "") {
			for (var i=0; i < midStrings.length; i++) {
				var tempMidString = "";
					for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
						if (fromString.indexOf(tempMidString) == -1) {
							midString = tempMidString;
							i = midStrings.length + 1;
					}
			}
		}
		
		// Keep on going until we build an "inbetween" string that doesn't exist. Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
		while (temp.indexOf(fromString) != -1) {
			var toTheLeft = temp.substring(0, temp.indexOf(fromString));
			var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
			temp = toTheLeft + midString + toTheRight;
		}
      
		// Next, replace the "inbetween" string with the "toString"
		while (temp.indexOf(midString) != -1) {
			var toTheLeft = temp.substring(0, temp.indexOf(midString));
			var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
			temp = toTheLeft + toString + toTheRight;
		}
	} 
	return temp;
} 

function LoadDrivingDirections(tToState){
	loadStates(document.frm.cboFromState);
	MM_preloadImages('../assets/interior/nav/contac_nav_on.gif','../assets/interior/nav/about_nav_on.gif','../assets/interior/nav/whydiff_nav_on.gif','../assets/interior/nav/essentials_nav_on.gif','../assets/interior/nav/home_nav_on.gif','../assets/interior/nav/partner_nav_on.gif','../assets/interior/nav/dot6_blue.gif');
}