var raqFormFirstSubmit = true;

function isFirstSubmit() {
	var isFirstSubmit = raqFormFirstSubmit;
	raqFormFirstSubmit = false;
	return isFirstSubmit;
}

function clearRAQErrorMessages() {
	document.getElementById("errorsDiv").style.display = "none";
	errorHtml = "Your request cannot be processed because of the following:";
	errorHtml += "<ul>";
	
}	

function validateRAQForm(form) {
	clearRAQErrorMessages();

	
	var errorsNum = 0;
	
	if (form.firstName.value == "" || !isValidNameText(form.firstName.value)) {
		errorHtml += "<li>You must specify a valid first name.</li>";
		errorsNum++;
	}
	if (form.lastName.value == "" || !isValidNameText(form.lastName.value)) {
		errorHtml += "<li>You must specify a valid last name.</li>";
		errorsNum++;
	}
	if (form.customerAddress.value == "") {
		errorHtml += "<li>Address is required.</li>";
		errorsNum++;
	}
	if (form.customerCity.value == "" || !isValidText(form.customerCity.value)) {
		errorHtml += "<li>You must specify a valid city name.</li>";
		errorsNum++;
	}
	if (form.customerState.value == "") {
		errorHtml += "<li>You must select a State.</li>";
		errorsNum++;
	}
	if (form.customerZipCode.value == "") {
		errorHtml += "<li>ZIP Code is required.</li>";
		errorsNum++;
	}
	else {
		if (!isValidZipCode(form.customerZipCode.value)) {
		errorHtml += "<li>ZIP Code is invalid.</li>";
			errorsNum++;
		}	
	}
	if (form.email.value == "") {
		errorHtml += "<li>Email address is required.</li>";
		errorsNum++;
	}
	else {
		if (!isValidEmail(form.email.value)) {
			errorHtml += "<li>Email address is invalid.</li>";
			errorsNum++;
		}	
	}
	if (form.email.value != form.confirmEmail.value) {
		errorHtml += "<li>Given Email addresses do not match.</li>";
		errorsNum++;
	}
	if (form.contactMeBy[1].checked) {
		if (!isValidPhoneNumber(form.areaCode.value+form.phone1.value+form.phone2.value)) {
			errorHtml += "<li>Given phone number is invalid.</li>";
			errorsNum++;
		}
	}
	if (form.intends_downpayment.checked) {
		if (form.downpayment.value == "") {
		errorHtml += "<li>You must specify an amount for the down payment.</li>";
			errorsNum++;
		}
		else {
			if (!form.downpayment.value.match(new RegExp("^[0-9]{1,6}$"))) {
				errorHtml += "<li>Given down payment amount is not valid.</li>";
				errorsNum++;
			}			
		}
	}
	if (form.intends_tradein.checked) {
		if (form.current_vehicle.value == "") {
			errorHtml += "<li>You must specify a vehicle for trade in.</li>";
			errorsNum++;
		}
	}
	checkParentBox(form.downpayment, form.intends_downpayment);
	checkParentBox(form.current_vehicle, form.intends_tradein);
	
	if (errorsNum == 0) {
		try{
			document.getElementById("customerState").style.display = "none";
			if (isFirstSubmit()) { 
				document.sendDealerForm.submit();
			}			
		}
		catch(err){
			document.getElementById("errorsDiv").style.display = "block";
			document.getElementById("errorsDiv").innerHTML = err;
			form.submitButton.disabled=false;
		}
	}
	else {
		errorHtml += "</ul>";
		document.getElementById("errorsDiv").style.display = "block";
		document.getElementById("errorsDiv").innerHTML = errorHtml;
		form.submitButton.disabled=false;
		return false;
	}
}

function isValidText(text) {
	var validText = false;
	
	var regText = new RegExp("[A-za-z ]{1,}$");
	if(text != ""){
		if(text.match(regText)) { 
			validText = true;
		}
	}
	
	return validText;
}

function isValidNameText(text) {
	var validText = false;
	
	var regText = new RegExp("[A-za-z ']{1,}$");
	if(text != ""){
		if(text.match(regText)) { 
			validText = true;
		}
	}
	
	return validText;
}

function isValidZipCode(zip) {
	var validZip = false;
	
	var regZip = new RegExp("^[0-9]{5}$");
	if((zip != " Enter Zip Code")&&(zip != "")){
		if(zip.match(regZip)) { 
			validZip = true;
		}
	}
	
	return validZip;
}

function isValidPhoneNumber(phone) {
	var validPhone = false;
	
	var regPhone = new RegExp("^[0-9]{10}$");
	if((phone != " Enter Zip Code")&&(phone != "")){
		if(phone.match(regPhone)) { 
			validPhone = true;
		}
	}
	
	return validPhone;
}

function isValidEmail(email) {
	var validEmail = false;
	
	var regExEmail = new RegExp("^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+");

    if ((email != "") && (email != " E-mail Address")) {
		if (email.match(regExEmail)) {
			validEmail = true;
		}
    }
	
	return validEmail;
}

function validateZipCode(form){
	var SelectZip = form.SearchByPostalCodePostalCode.value;
	var errorMessage = "";	
	
	var regZip = new RegExp("^[0-9]{5}$")	
	if((SelectZip != " Enter Zip Code")&&(SelectZip != "")){
		if(!SelectZip.match(regZip)) { 
			errorMessage += "The Zip Code is incorrect.<br />" 
		}
	}
	
	var errorDiv = document.getElementById("ErrorMessage");
	if(errorMessage != ""){		
		errorDiv.innerHTML = errorMessage + "<br />";
		errorDiv.style.display = "block";
	} else{
		errorDiv.innerHTML = "";
		errorDiv.style.display = "none";
		form.submit();
		createCookiesZipCode();
	}

}

function validateCityState(form){
	var SelectCity = form.SearchByCityStateCityName.value;
	var SelectState = form.SearchByCityStateStateName.value;
	var SelectMile = form.SearchByCityStateProximity.value;
	var errorMessage = "";	
	
	if (SelectState==0) { errorMessage += "Please select a state.<br />"; }
	
	if(((SelectCity==" Enter City Name") || (SelectCity == "") || (SelectCity == " "))){
		errorMessage += "Please enter the city name.<br />";
	}
	
	var errorDiv = document.getElementById("ErrorMessage");
	if(errorMessage != ""){		
		errorDiv.innerHTML = errorMessage + "<br />";
		errorDiv.style.display = "block";
	} else{
		errorDiv.innerHTML = "";
		errorDiv.style.display = "none";
		form.submit();
		createCookiesCityState();
	}

}

function validateDealer(form){
	var SelectDealer = form.SearchByVendorVendorName.value;
	var SelectCity = form.SearchByVendorCityName.value;
	var SelectState = form.SearchByVendorStateName.value;
	var errorMessage = "";	
	
	if (SelectState==0) { errorMessage += "Please select a state.<br />"; }
	
	if(((SelectDealer==" Enter Dealer Name") || (SelectDealer == "") || (SelectDealer == " "))){
		errorMessage += "Please enter the dealer name.<br />";
	}
	if(((SelectCity==" Enter City Name") || (SelectCity=="") || (SelectCity == " "))){
		errorMessage += "Please enter the city name.<br />";
	}
	
	var errorDiv = document.getElementById("ErrorMessage");
	if(errorMessage != ""){
		errorDiv.innerHTML = errorMessage + "<br />";
		errorDiv.style.display = "block";
	} else {
		errorDiv.innerHTML = "";
		errorDiv.style.display = "none";
		form.submit();
		createCookiesDealer();
	}

}

function validateRangeDL(form){
	var SelectMile = form.LoadMileUpdate.value;
	var errorMessage = "";
	
	if (SelectMile==0){ errorMessage += "Please select a valid range.<br />"; }
	
	var errorDiv = document.getElementById("ErrorMessage");
	if(errorMessage != ""){
		errorDiv.innerHTML = errorMessage + "<br />";
		errorDiv.style.display = "block";
	} else {
		errorDiv.innerHTML = "";
		errorDiv.style.display = "none";
		AssignProximity();
		form.submit();
	}
}

function AssignProximity(){
	var proximity =  document.getElementById("LoadMileUpdate").value;
	document.forms["SearchRangeDL"].PCProximity.value = proximity;
	document.forms["SearchRangeDL"].CSProximity.value = proximity;
}

function interested(){
	var temp = begin;

	if(document.sendDealerForm.iaminterested.checked){
		document.sendDealerForm.interestedIn[0].checked=true;
		temp = temp + "\n\nI am interested in Buying a vehicle\n\n";
	} else {
		document.sendDealerForm.interestedIn[0].checked=false;
		document.sendDealerForm.interestedIn[1].checked=false;
	}
	document.sendDealerForm.msgText.value = temp;
}

function interestedin(tex){
	document.sendDealerForm.iaminterested.checked = true;
	var temp = begin;
	temp = temp + "\n\nI am interested in " + tex + " a vehicle\n\n";
	document.sendDealerForm.msgText.value = temp;
}

function checkParentBox(field, box) {
	if (field.value != "") {
		box.checked = true;
	}
}

function checkIfPopup() {
	if (opener) {
		var newURL = window.location.href + "&resendForm=true";
		opener.window.location.href = newURL;
		window.close();
	}
	else {
		document.getElementById("resendForm").submit();
	}
}

function startOver() {
	if (opener) {
		if(toolName.toUpperCase() == "RAT"){
			opener.window.location = '/messaging/saab/dealersearch.jsp?useSearchCookies=false&toolName='+toolName + '&evar=rat_thankyou_restart';
		}
		else{
			opener.window.location = '/messaging/saab/dealersearch.jsp?useSearchCookies=false&toolName='+toolName + '&evar=raq_thankyou_restart';
		}
		
	}
	else {
		if(toolName.toUpperCase() == "RAT"){
			window.location = '/messaging/saab/dealersearch.jsp?useSearchCookies=false&toolName='+toolName + '&evar=rat_thankyou_restart';
		}
		else{
			window.location = '/messaging/saab/dealersearch.jsp?useSearchCookies=false&toolName='+toolName + '&evar=raq_thankyou_restart';
		}
		
	}
}

function doResendForm() {

	if (resendForm == "true") {
		//document.getElementById("resendForm").submit();
	}
}

function displayGmbpInfo() {
	var msgText = "GM Certified Internet Managers are specially trained to work with\n";	
	msgText += "online shoppers like you with no obligation on your part to buy.\n";
	msgText += "Use this message form to ask your GM Certified Internet Manager\n";
	if (toolName == "raq")
		msgText += "for a quote on this vehicle. You will receive a response within 24 hours.";
	else
		msgText += "for a test drive on this vehicle. You will receive a response within 24 hours.";
	alert(msgText);
}