/*******************************************************************************
JavaScript Document: Mercuryvehicles.com Form Validation and Helper Function
********************************************************************************/
	function AutoTabNext(iIndex, sForm, sName, iMaxLength) {
		/***********************************************************
		Version 1.0
		Date: 03-23-04
		Description: Tabs to the next phone field
		************************************************************/
		var iCurrentLength = eval('document.'+sForm+'.'+sName+'.value.length');		
		if(iCurrentLength==iMaxLength && iIndex!=2) {
			var d_focus= new Array(3) 
			d_focus[0]="txtArea";
			d_focus[1]="txt3Digit";
			d_focus[2]="txt4Digit";
			iIndex++
			focusIt = eval('document.'+sForm+'.'+d_focus[iIndex]);
			focusIt.focus();
		}
	}
	function IsEmail(sEmail) {
		/***********************************************************
		Version 1.0
		Date: 03-23-04
		Description: Checks for valid email
		************************************************************/
		var result = false
  		var theStr = new String(sEmail)
  		var index = theStr.indexOf("@");
  		if (index > 0) {
		    var pindex = theStr.indexOf(".",index);
		    if ((pindex > index+1) && (theStr.length > pindex+1))
				result = true;
  		}
  		return result;
	}
	function GoBackStep1() {
		/**************************************************************************
		Version: 1.0
		Date: 08-16-2005
		Description: Submits Request Form back to Step 1 
		***************************************************************************/
		document.forms["frmBack"].txtFirst.value = document.forms["frmRequest2"].txtFirst.value;
		document.forms["frmBack"].txtLast.value = document.forms["frmRequest2"].txtLast.value;
		document.forms["frmBack"].txtEmail.value = document.forms["frmRequest2"].txtEmail.value;
		document.forms["frmBack"].txtArea.value = document.forms["frmRequest2"].txtArea.value;
		document.forms["frmBack"].txt3Digit.value = document.forms["frmRequest2"].txt3Digit.value;
		document.forms["frmBack"].txt4Digit.value = document.forms["frmRequest2"].txt4Digit.value;
		document.forms["frmBack"].txtAddress1.value = document.forms["frmRequest2"].txtAddress1.value;
		document.forms["frmBack"].txtAddress2.value = document.forms["frmRequest2"].txtAddress2.value;
		document.forms["frmBack"].txtCity.value = document.forms["frmRequest2"].txtCity.value;
		document.forms["frmBack"].txtZip.value = document.forms["frmRequest2"].txtZIP.value;
		document.forms["frmBack"].submit();
	}
	function GoBackFromStep3(sStep) {
		/**************************************************************************
		Version: 1.0
		Date: 08-16-2005
		Description: Submits Request Form Step 2 
		***************************************************************************/
		if(sStep == "step2") {
			document.forms["frmBack"].action="request2.asp";
		} else {
			document.forms["frmBack"].action="request.asp";
		}
		document.forms["frmBack"].submit();
	}
	function ClearSearchBox() {
		/*****************************************************************
		Version: 1.0
		Date: 06-21-04
		Description: Clears search input box on the Step 1 of 
					 Test Drive\Request A Quote\Brochure Request.
		*******************************************************************/
		var sValue = cookieGet("dlr_search");
		if(!sValue) { 
			sValue = ""; 
		}
		if (document.forms["frmRequest1"].txtSearchBy.value == "Enter Zip Code") {
			if(sValue == "") {
				document.forms["frmRequest1"].txtSearchBy.value = "";
			} else {
				document.forms["frmRequest1"].txtSearchBy.value = sValue;
			}
		} else {
			if(sValue == "") {
				document.forms["frmRequest1"].txtSearchBy.value = "";
			} else {
				document.forms["frmRequest1"].txtSearchBy.value = sValue;
			}
		}
	}
	function CheckDealerLocator2() {
		/*********************************************************************
		Version 2.0
		Date: 01-03-08 (J. Selleck)
		Description: Checks for valid form information on locate a dealer
		**********************************************************************/
		var frmLocator = document.forms["frmLocate"];
		var oSpanError = document.getElementById("locate_error");
		var oDealerResults = document.getElementById("dealer_results");
		var sZip = frmLocator.txtZip.value
		var sCity = frmLocator.txtCity.value
		sCity = sCity.replace (/[,\.\?!]/g, "");
		var sState = frmLocator.txtState.value
		var sDealer = frmLocator.txtDealer.value
		sDealer = sDealer.replace (/[,\.\?!]/g, "");
		var cmbRadius=frmLocator.cmbRadius[frmLocator.cmbRadius.selectedIndex].value;
		oSpanError.innerHTML = "";
		
		var sQS = "";
		
		if (IsZipCode(sZip)) {
			oCookie.setCookieValue("zipcode", sZip, 65)	
			cookieSet("dlr_search", sZip, 180, '/');
			sQS = "zip=" + sZip;
		}
		else if (sCity.length > 0 && sState.length > 0) {
			sQS = "c=" + escape(sCity) + "&st=" + escape(sState);
		}
		else if (sDealer.length > 0) {
			sQS = "dlr=" + escape(sDealer)
		}
		
		sQS=sQS+"&cmbRadius="+cmbRadius;
			
		if (sQS.length>0) {
			document.location = "/shoptools/find_dealer.asp?" + sQS;
		}
		else {
			oSpanError.innerHTML = "<br />Your entry was incomplete. Please enter a Zip Code, City and State, or Dealer Name and click Find a Dealer to display search results.<br />";
			oDealerResults.innerHTML = "";
			setSearchPageUpperTextToDefault();
		}
		return false;
	}
	function setSearchPageUpperTextToDefault() {
		var oUpperBodyText = document.getElementById("upper_body_text");
		oUpperBodyText.innerHTML = "<br />Finding a Mercury Dealer in your area is as simple as entering either your zip code, city and state, or name of Dealer. You will be supplied with a list of Dealers, along with their address, phone number, and directions to their Dealership. You can even browse their inventory.";
	}	
	function CheckOptIn() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on step 1 of optin request
		**********************************************************************/
		var frmLogin = document.forms["frmMain"];
		var blnSubmit = true;
		
		if(!IsZipCode(frmLogin.Zip.value)) {
			document.getElementById("txtZIP_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			oCookie.setCookieValue("zipcode", frmLogin.Zip.value, 65)	
			document.getElementById("txtZIP_error").style.color = "#000000";
		}
		if(frmLogin.IDCode.value.length < 10) {
			document.getElementById("txtCode_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtCode_error").style.color = "#000000";
		}
		if(blnSubmit) {
			document.getElementById("next_button").style.visibilty = "hidden";
			document.getElementById("errorMsg").innerHTML = "Please be patient while we locate your information..."
			frmLogin.submit();
			return true;
		} else {
			document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
			return false;
		}
		
	}
	function CheckOptInBox() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Checks/UnChecks the opt-in box upon entering email
		**********************************************************************/
		var frmStep2 = document.forms["frmMain"];
		
		if(frmStep2.txtEmail.value.length > 0) {
			frmStep2.optContact.checked = true
		} else {
			frmStep2.optContact.checked = false
		}
	}
	function CheckOptIn2() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on step 2 of optin request
		**********************************************************************/
		var frmStep2 = document.forms["frmMain"];
		var blnSubmit = true;
		
		if (eval("document.frmMain.optContact.checked") == true) {
			if(!IsEmail(frmStep2.txtEmail.value)) {
				document.getElementById("txtEmail_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtEmail_error").style.color = "#000000";
			}
		} else {
			document.getElementById("txtEmail_error").style.color = "#000000";
		}
		if(blnSubmit) {
			document.getElementById("next_button").style.visibilty = "hidden";
			document.getElementById("errorMsg").innerHTML = "Please be patient while we update your information..."
			frmStep2.submit();
			return true;
		} else {
			document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
			return false;
		}
	}
	function CheckDVD() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on step 1 of DVD Request
		**********************************************************************/
		var frmStep1 = document.forms["frmRequest1"];
		var sState = frmStep1.txtState.options[frmStep1.txtState.options.selectedIndex].value;
		var sInMarket = frmStep1.txtTimeInMarket.options[frmStep1.txtTimeInMarket.options.selectedIndex].value;
		var blnSubmit = true;
		
		if(frmStep1.txtFirst.value == "") {
			document.getElementById("txtFirst_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtFirst_error").style.color = "#000000";
		}
		if(frmStep1.txtLast.value == "") {
			document.getElementById("txtLast_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtLast_error").style.color = "#000000";
		}
		if(frmStep1.txtAddress1.value == "") {
			document.getElementById("txtAddress1_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtAddress1_error").style.color = "#000000";
		}
		if(frmStep1.txtCity.value == "") {
			document.getElementById("txtCity_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtCity_error").style.color = "#000000";
		}
		if(sState == "") {
			document.getElementById("txtState_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtState_error").style.color = "#000000";
		}
		if(!IsZipCode(frmStep1.txtZIP.value)) {
			document.getElementById("txtZIP_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			cookieSet("zipcode", frmStep1.txtZIP.value, 180, '/');
			document.getElementById("txtZIP_error").style.color = "#000000";
		}
		if(sInMarket == "") {
			document.getElementById("txtTimeInMarket_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtTimeInMarket_error").style.color = "#000000";
		}
		if (eval("document.frmRequest1.optContact.checked") == true) {
			if(!IsEmail(frmStep1.txtEmail.value)) {
				document.getElementById("txtEmail_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtEmail_error").style.color = "#000000";
			}
		} else {
			document.getElementById("txtEmail_error").style.color = "#000000";
		}
		if(blnSubmit) {
			frmStep1.submit();
			return true;
		} else {
			document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
			return false;
		}
	}
	function ValidateOptIn() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on get updates request
		**********************************************************************/
		var frmUpdates = document.forms["frmGetUpdates"];
		var blnSubmit = true;
		
		if(frmUpdates.txtFirst.value == "") {
			document.getElementById("txtFirst_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtFirst_error").style.color = "#333333";
		}
		if(frmUpdates.txtLast.value == "") {
			document.getElementById("txtLast_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtLast_error").style.color = "#333333";
		}
		if(!IsEmail(frmUpdates.txtEmail.value)) {
			document.getElementById("txtEmail_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtEmail_error").style.color = "#333333";
		}
		if(blnSubmit) {
			document.getElementById("errorMsg").innerHTML = "Please be patient while we submit your request...";
			return true;
		} else {
			document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
			return false;
		}
		
	}
	function CheckRequestBrochure() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on step 1 of brochure request
		**********************************************************************/
		var frmStep1 = document.forms["frmRequest1"];
		var sState = frmStep1.txtState.options[frmStep1.txtState.options.selectedIndex].value;
		var sInMarket = frmStep1.txtTimeInMarket.options[frmStep1.txtTimeInMarket.options.selectedIndex].value;
		var iTotal = 0;
		var iMax = frmStep1.vehicle.length;
		var blnSubmit = true;
		
		for (var iIndex = 0; iIndex < iMax; iIndex++) {
			if (eval("document.frmRequest1.vehicle["+iIndex+"].checked") == true) {
				iTotal += 1;
			}
		}
		if(iTotal == 0) {
			document.getElementById("vehicle_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("vehicle_error").style.color = "#000000";
		}
		if(frmStep1.txtFirst.value == "") {
			document.getElementById("txtFirst_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtFirst_error").style.color = "#000000";
		}
		if(frmStep1.txtLast.value == "") {
			document.getElementById("txtLast_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtLast_error").style.color = "#000000";
		}
		if(frmStep1.txtAddress1.value == "") {
			document.getElementById("txtAddress1_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtAddress1_error").style.color = "#000000";
		}
		if(frmStep1.txtCity.value == "") {
			document.getElementById("txtCity_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtCity_error").style.color = "#000000";
		}
		if(sState == "") {
			document.getElementById("txtState_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtState_error").style.color = "#000000";
		}
		if(!IsZipCode(frmStep1.txtZIP.value)) {
			document.getElementById("txtZIP_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			//cookieSet("zipcode", frmStep1.txtZIP.value, 180, '/');
			oCookie.setCookieValue("zipcode", frmStep1.txtZIP.value, 65)				
			document.getElementById("txtZIP_error").style.color = "#000000";
		}
		if(sInMarket == "") {
			document.getElementById("txtTimeInMarket_error").style.color = "#FF0000";
			blnSubmit = false;
		} else {
			document.getElementById("txtTimeInMarket_error").style.color = "#000000";
		}
		if (eval("document.frmRequest1.optContact.checked") == true) {
			if(!IsEmail(frmStep1.txtEmail.value)) {
				document.getElementById("txtEmail_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtEmail_error").style.color = "#000000";
			}
		} else {
			document.getElementById("txtEmail_error").style.color = "#000000";
		}
		if(blnSubmit) {
			frmStep1.submit();
			return true;
		} else {
			document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
			return false;
		}
	}
	function CheckRequestDrive() {
		/*********************************************************************
		Version 1.0
		Date: 03-23-04
		Description: Validates form information on step 1 of test drive
		**********************************************************************/
		var frmStep1 = document.forms["frmRequest1"];
		var frmNextStep = document.forms["frmNext"];
		var oSpanVehicle = document.getElementById("vehicle_error");
		var sVehicle = frmStep1.cmbModel.options[frmStep1.cmbModel.options.selectedIndex].value;
		var sTime = frmStep1.TDTime.options[frmStep1.TDTime.options.selectedIndex].value;
		var sDate = frmStep1.TDDate.options[frmStep1.TDDate.options.selectedIndex].value;
		var sForm = document.forms["frmRequest1"].value;
		var blnSubmit = true;
		
		if(cookieGet("dlrpa") != null) {
			/* Dealer has been picked, now check the rest of the form */
			if(sVehicle == "") {
				document.getElementById("vehicle_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("vehicle_error").style.color = "#000000";
			}
			if(sTime == "") {
				document.getElementById("TDTime_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("TDTime_error").style.color = "#000000";
			}
			if(sDate == "") {
				document.getElementById("TDDate_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("TDDate_error").style.color = "#000000";
			}
			if(frmStep1.txtFirst.value == "") {
				document.getElementById("txtFirst_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtFirst_error").style.color = "#000000";
			}
			
			if(frmStep1.txtLast.value == "") {
				document.getElementById("txtLast_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtLast_error").style.color = "#000000";
			}
			if((frmStep1.txtEmail.value == "") && (frmStep1.txtArea.value == "") && (frmStep1.txt3Digit.value == "") && (frmStep1.txt4Digit.value == "")) {
				document.getElementById("txtPhone_error").style.color = "#FF0000";
				document.getElementById("txtEmail_error").style.color = "#FF0000";
				blnSubmit = false;
			} else {
				document.getElementById("txtPhone_error").style.color = "#000000";
				document.getElementById("txtEmail_error").style.color = "#000000";
			}
			if(frmStep1.txtEmail.value.length > 0) {
				if(!IsEmail(frmStep1.txtEmail.value)) {
					document.getElementById("txtEmail_error").style.color = "#FF0000";
					blnSubmit = false;
				} else {
					document.getElementById("txtPhone_error").style.color = "#000000";
				}
			}
			if(blnSubmit) {
				try {
					cookieSet("dlr_search", document.forms["frmRequest1"].txtSearchBy.value, 180, '/');
				} catch(e) { 
					/* Form field does not exsist on page */ 
				}
				/* Set hidden fields from values of the form - then submit the new form */
				document.getElementById("errorMsg").innerHTML = "";
				frmNextStep.vehicle.value = sVehicle;
				frmNextStep.txtFirst.value = frmStep1.txtFirst.value;
				frmNextStep.txtLast.value = frmStep1.txtLast.value;
				frmNextStep.txtEmail.value = frmStep1.txtEmail.value;
				frmNextStep.txtArea.value = frmStep1.txtArea.value;
				frmNextStep.txt3Digit.value = frmStep1.txt3Digit.value;
				frmNextStep.txt4Digit.value = frmStep1.txt4Digit.value;
				frmNextStep.TDDate.value = sDate;
				frmNextStep.TDTime.value = sTime;
				frmNextStep.submit();
			} else {
				document.getElementById("errorMsg").innerHTML = "Please complete all required fields to continue.";
				document.getElementById("errorMsg").scrollIntoView(true);
				/* There are still form validation errors on page */
			}
		} else {
			if ((frmStep1.txtSearchBy.value == "") || (frmStep1.txtSearchBy.value == "Enter Zip Code")) {
				/* Dealer has not been picked, submit dealer results - but first check dealer search criteria */
				document.getElementById("dealer_error").innerHTML = "You must define a search criteria";
			} else {
				/* Dealer search criteria has been set - submit form. */
				document.getElementById("dealer_error").innerHTML = "";
				frmStep1.vehicle.value = sVehicle;
				frmStep1.submit();				
			}
		}
	}
	function GoBackBrochure() {
		/**************************************************************************
		Version: 1.0
		Date: 10-20-2005
		Description: Submits Brochure Request Form back to Step 1 
		***************************************************************************/
		document.forms["frmBack"].submit();
	}
	function GoBackDrive() {
		/**************************************************************************
		Version: 1.0
		Date: 10-20-2005
		Description: Submits Test Drive Form back to Step 1 
		***************************************************************************/
		document.forms["frmBack"].submit();
	}
	function SubmitBrochure() {
		/**************************************************************************
		Version: 1.0
		Date: 10-20-2005
		Description: Submits Brochure Request Form to Step 3 
		***************************************************************************/
		document.forms["frmRequest2"].submit();
	}
	function SubmitDrive() {
		/**************************************************************************
		Version: 1.0
		Date: 10-20-2005
		Description: Submits Test Drive Form to Step 3 
		***************************************************************************/
		document.forms["frmRequest2"].submit();
	}
	function ValidateForm(theForm) {
		/**************************************************************************
		Version: 1.0
		Date: 09-07-2004
		Description: Checks for valid form information on any given form
		***************************************************************************/
		var objElements = theForm.elements;
		var blnSubmit = true;
		var oSpanError;
		
		for(var i = 0; i < objElements.length - 1; i++) {
			switch (objElements[i].className) {
				case "validate_text" :
				if(objElements[i].value == "") {
					//alert("validate control = " + objElements[i].name);
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = objElements[i].alt;
					blnSubmit = false;
				} else {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = "";
				}
				break;
				case "validate_email" :
				if(!IsEmail(objElements[i].value)) {
					//alert("validate control = " + objElements[i].name);
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = objElements[i].alt;
					blnSubmit = false;
				} else {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = "";
				}
				break;
				case "validate_zip" : 
				if(!IsZip(objElements[i].value)) {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = objElements[i].alt;
					blnSubmit = false;
				} else {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = "";
					cookieSet("zipcode", objElements[i].value, 180, '/');
				}
				break;
				case "validate_select" :
				if(objElements[i].value == "") {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = objElements[i].title;
					blnSubmit = false;
				} else {
					oSpanError = document.getElementById(objElements[i].name+"_error");
					oSpanError.innerHTML = "";
				}
				break;
			}
		}
		if(blnSubmit) {
			theForm.submit();
			return true;
		} else {
			return false;
		}
	}
	