// script library for use with contact form
// requieres CustomClientScript.js


// rebuilds the Ideal Car section of dropdowns
function GetIdealCarDetails(obj) {

	// get the current values selected in the Ideal Car dropdowns
	var oNamePlate = getObj("selIdealCarNamePlate");
	var oModel = getObj("selIdealCarModel");
	var oColour = getObj("selIdealCarColour");
	var oTransmission = getObj("selIdealCarTransmission");
	var oFuel = getObj("selIdealCarFuel");
	
	// build IdealCar object to hold the data
	var oIdealCar = new IdealCar();
			oIdealCar.nameplate = getElementValue(oNamePlate);
			oIdealCar.model = getElementValue(oModel);
			oIdealCar.colour = getElementValue(oColour);
			oIdealCar.transmission = getElementValue(oTransmission);
			oIdealCar.fuel = getElementValue(oFuel);

	// store the data on the form
	var elemIdealCar = getObj("hidIdealCarObjectString");
	elemIdealCar.value = oIdealCar.toString();
	
	ajaxCallback(elemIdealCar, getObj("divIdealCar"));
}

// object to hold configuration data for the customer's Ideal Car
function IdealCar() {
	this.nameplate = "";
	this.model = "";
	this.colour = "";
	this.transmission = "";
	this.fuel = "";
	
	// writes the object out as an object instantiation string for ajax transmission
	this.toString =	function() {
										var strOutput =		"{";
												strOutput +=	"nameplate : '" + this.nameplate + "',";
												strOutput +=	"model : '" + this.model + "',";
												strOutput +=	"colour : '" + this.colour + "',";
												strOutput +=	"transmission : '" + this.transmission + "',";
												strOutput +=	"fuel : '" + this.fuel + "'}";
										
										return strOutput;
									}
	// sets the object's properties according to those set in the provided string
	this.fromString = function(strIdealCar) {
											eval("var oIdealCar = " + strIdealCar);
											
											this.nameplate = oIdealCar.nameplate;
											this.model = oIdealCar.model;
											this.colour = oIdealCar.colour;
											this.transmission = oIdealCar.transmission;
											this.fuel = oIdealCar.fuel;
										}
}

function ValidateAndSubmit() {
	var strName = getElementValue(getObj("inpName"));
	var strEmail = getElementValue(getObj("inpEmailAddress"));
	var strPhone = getElementValue(getObj("inpPhone"));
	
	var strAdditionalInfo = getElementValue(getObj("inpAdditionalInformation"));
		
	if(strName == "") {
		getObj("trName").style.display = "block";
	}
	else {
		getObj("trName").style.display = "none";
	}
	
	if(strEmail == "") {
		getObj("trEmailAddress").style.display = "block";
	}
	else {
		getObj("trEmailAddress").style.display = "none";
	}
	
	if(strPhone == "") {
		getObj("trPhone").style.display = "block";
	}
	else {
		getObj("trPhone").style.display = "none";
	}
	
	// if form's not complete then stop submission
	if(strName == "" || strEmail == "" || strPhone == "") return false;
	
	switch(strAdditionalInfo) {
		case "test drive":
			var oDate = getObj("inpTestDriveDate");
			var oDate_Error = getObj("tdTestDriveDate");
			break;
		case "MOT required":
			var oDate = getObj("inpMOTPreferedDate");
			var oDate_Error = getObj("tdMOTPreferedDate");
			break;
		case "service required":
			var oDate = getObj("inpServicePreferedDate");
			var oDate_Error = getObj("tdServicePreferedDate");
			break;
		default:
			getObj("contact_form").submit();
			return true;  // this line surpresses jscript error as script attempts to carry on while form submits
	}
	
	var dtBookingDate = getNewDate(getElementValue(oDate));
	
	var dtToday = new Date();
	if (!dtBookingDate || isNaN(dtBookingDate - dtToday)){
		oDate_Error.innerHTML = "You must provide a valid date.";
		oDate_Error.parentNode.style.display = "block";
		oDate.focus();
		return false;
	}
	else {
		oDate_Error.parentNode.style.display = "none";
	}
	
	if ( (dtBookingDate - dtToday) < 172800000){
		oDate_Error.innerHTML = "You cannot make a booking for less than 48hrs from the current time.";	
		oDate_Error.parentNode.style.display = "block";
		oDate.focus();
		return false;
	}
	else {
		oDate_Error.parentNode.style.display = "none";
	}
	
	getObj("contact_form").submit();
}