 // Use jQuery via jQuery(...)
 jQuery(document).ready(function(){
	//Opens any link with class="external" or <a hrefs> ending in .pdf suffix into a new browser window
	jQuery("a[class='external'],a[href$='.pdf'],a[class='external icon-pdf'],a[class='external facebook'],a[class='external twitter'],a[class='external youtube'],a[rel='external']").click(function () {
		window.open(this.href);
		return false;
	});
});

var ET = {};

ET.VehicleBar = function (config) {
	var self = this, c;
	c = self.config = $.extend({}, self.defaults, config || {});

	self.yearCombo = jQuery(c.yearSelector).slickCombo({
		postText: c.yearPostText,
		postValue: c.yearPostValue,
		triggerSelected: c.loadCache,
		emptyText: "Select Year",
		textName: c.yearTextName,
		key: c.key,
		tpmsType: c.tpmsType
	}).data("slickCombo");

	self.makeCombo = jQuery(c.makeSelector).slickCombo({
		postText: c.makePostText, postValue: c.makePostValue, triggerSelected: c.loadCache, isActive: c.loadCache,
		emptyText: "Select Make", textName: c.makeTextName,
		source: self.yearCombo, actionUrl: c.actionUrl,
		key: c.key, tpmsType: c.tpmsType,
		postData: function(){return {"year": self.yearCombo.getValue()};}
	}).data("slickCombo");

	self.modelCombo = jQuery(c.modelSelector).slickCombo({
		postText: c.modelPostText, postValue: c.modelPostValue, triggerSelected: c.loadCache, isActive: c.loadCache,
		emptyText: "Select Model",  textName: c.modelTextName,
		source: self.makeCombo, actionUrl: c.actionUrl,
		key: c.key, tpmsType: c.tpmsType,
		postData: function(){ return {"year": self.yearCombo.getValue(), "makeId": self.makeCombo.getValue()};}
	}).data("slickCombo");;

	if (c.submodel) {
		self.submodelCombo = jQuery(c.submodelSelector).slickCombo({
			postText: c.submodelPostText, postValue: c.submodelPostValue, triggerSelected: c.loadCache, isActive: c.loadCache,
			emptyText: "Select Submodel", textName: c.submodelTextName,
			source: self.modelCombo, actionUrl: c.actionUrl,
			key: c.key, tpmsType: c.tpmsType,
			postData: function(){return {"year": self.yearCombo.getValue(), "makeId": self.makeCombo.getValue(), "modelId": self.modelCombo.getValue()};},
			changeCallback: function() {
				if (!this.isDisabled && "" != this.getValue()) {
					self.tpmsEnable();
					if (this.returnData) {
						var vehicles = this.returnData.data;
						for (var i = 0; i < vehicles.length; i++) {
							if (vehicles[i].text == this.getValue() || vehicles[i].value == this.getValue()) {
								self.tpmsSetValue(vehicles[i].tpms);
								jQuery(c.baseVehicleSelector).val(vehicles[i].baseVehId);
								break;
							}
						}
					}
					else {
						self.tpmsSetValue(jQuery("#tpmsCached").val());
						jQuery(c.baseVehicleSelector).val(jQuery("#baseVehIdCached").val());
					}
				}
				else {
					self.tpmsDisable();
					jQuery(c.baseVehicleSelector).val("");
				}
			}
		}).data("slickCombo");

		if ("dropdown" == this.config.tpmsType) {
			self.tpmsCombo = jQuery("#tpms").slickCombo({
				postText:false, postValue: true, triggerSelected: c.loadCache, isActive: c.loadCache,
				emptyText: "Vehicle has TPMS"
			}).data("slickCombo");
		}
	}
	else {
		self.engineCombo = jQuery(c.engineSelector).slickCombo({
			postText: c.enginePostText, postValue: c.enginePostValue, triggerSelected: c.loadCache, isActive: c.loadCache,
			emptyText: "Select Engine", textName: c.submodelTextName,
			source: self.modelCombo, actionUrl: c.actionUrl, tpmsType: c.tpmsType,
			postData: function(){return {"year": self.yearCombo.getValue(), "makeId": self.makeCombo.getValue(), "modelId": self.modelCombo.getValue()};}
		}).data("slickCombo");
	}

}

ET.VehicleBar.prototype = {
	defaults: {
		loadCache: false,
		submodel: true,
        tpmsType: "dropdown",
		actionUrl: "/pricing/selectVehicle.action",
		key: "value",

		zipSelector: "#selectorZip", baseVehicleSelector: "#baseVehIdHidden", tpmsHiddenSelector: "#tpmsHidden",
		yearSelector: "#year", yearPostText: true, yearPostValue: false, yearTextName: "vehicle.year",
		makeSelector: "#make", makePostText: true, makePostValue: false, makeTextName: "vehicle.make",
		modelSelector: "#model", modelPostText: true, modelPostValue: false, modelTextName: "vehicle.model",
		submodelSelector: "#submodel", submodelPostText: true, submodelPostValue: false, submodelTextName: "vehicle.submodel",
		engineSelector: "#engine", enginePostText: true, enginePostValue: false, engineTextName: "vehicle.engine"
    },


	tpmsDisable: function() {
		if ("dropdown" == this.config.tpmsType)
			this.tpmsCombo.disable();
		else if ("radio" == this.config.tpmsType) {
			jQuery("#tpmsYes").removeAttr("checked");
			jQuery("#tpmsNo").removeAttr("checked");
			jQuery("#tpmsYes").attr("disabled", true);
			jQuery("#tpmsNo").attr("disabled", true);
		}
	},
	tpmsEnable: function() {
		if ("dropdown" == this.config.tpmsType)
			this.tpmsCombo.enable();
		else if ("radio" == this.config.tpmsType) {
			jQuery("#tpmsYes").removeAttr("disabled");
			jQuery("#tpmsNo").removeAttr("disabled");
		}
	},
	tpmsSetValue: function(value) {
		if ("dropdown" == this.config.tpmsType){
			this.tpmsCombo.setSelectedValue(value, true, true);
                        if (value == 1) {
                            //-- Yes to No would not be a valid user action--//
                            this.tpmsCombo.disable();
                        }
                }else if ("hidden" == this.config.tpmsType)
			jQuery(this.config.tpmsHiddenSelector).val(value);
		else if ("radio" == this.config.tpmsType) {
			if (value == 1) {
				jQuery("#tpmsNo").removeAttr("checked");
				jQuery("#tpmsYes").attr("checked", true);
                                //-- Yes to No would not be a valid user action--//
                                jQuery("#tpmsYes").attr("disabled", true);
			        jQuery("#tpmsNo").attr("disabled", true);
			}
			else {
				jQuery("#tpmsNo").attr("checked", true);
				jQuery("#tpmsYes").removeAttr("checked");
			}
		}
	},
	validate: function () {
		var vehicleErrors = [], zipMessage = "", vMessage = "", error = false;

		if (jQuery(this.config.zipSelector).length) {
			if(!isValidZipCode($.trim(jQuery(this.config.zipSelector).val()))) {
				zipMessage += "Please enter a valid ZIP Code";
				error = true;
			}
		}

		var year = this.yearCombo.getValue().toUpperCase();
		if(year == null || year == '' || year == 'SELECT YEAR') {
			vehicleErrors.push("year");
			error = true;
		}
		var make = this.makeCombo.getValue().toUpperCase();
		if(make == null || make == '' || make == 'SELECT MAKE') {
			vehicleErrors.push("make");
			error = true;
		}
		var model = this.modelCombo.getValue().toUpperCase();
		if(model == null || model == '' || model == 'SELECT MODEL') {
			vehicleErrors.push("model");
			error = true;
		}

		if (this.config.submodel) {
			var submodel = this.submodelCombo.getValue().toUpperCase();
			if(submodel == null || submodel == '' || submodel == 'SELECT SUBMODEL') {
				vehicleErrors.push("submodel");
				error = true;
			}
		}
		else {
			var engine = this.engineCombo.getValue().toUpperCase();
			if(engine == null || engine == '' || engine == 'SELECT SUBMODEL') {
				vehicleErrors.push("engine");
				error = true;
			}
		}

		if(jQuery("#mileage").length) {
			var mileageOk = false;
			var mileage = jQuery("#mileage").val();
			if(mileage != null || mileage != '') {
				mileage = new Number(mileage.replace(',',''));
				if (mileage != NaN && mileage > 0 && 1000000 > mileage) {
					jQuery("#mileage").val(mileage);
				}
				else {
					vehicleErrors.push("mileage (less then 1,000,000 miles)");
					error = true;
				}
			}
		}

		if(error) {
			if (vehicleErrors.length != 0) {
				if (vehicleErrors.length == 1)
					vMessage = " " + vehicleErrors[0];
				else
					for (var i = 0 ; i < vehicleErrors.length ; i++) {
						if (i != 0 && vehicleErrors.length != 2)
							vMessage += ","
						if (i == vehicleErrors.length - 1)
							vMessage += " and"
						vMessage += " " + vehicleErrors[i];
					}
			}
			if (zipMessage != "" && vMessage != "")
				vMessage = zipMessage + " and your vehicle" + vMessage + ".";
			else if (zipMessage != "")
				vMessage = zipMessage + ".";
			else
				vMessage = "Please enter your vehicle" + vMessage + ".";

			alert(vMessage);
			return false;
		}

		this.tpmsEnable();
		return true;
	},
        validateEpa: function () {
		var vehicleErrors = [], zipMessage = "", vMessage = "", error = false;


		var year = this.yearCombo.getValue().toUpperCase();
		if(year == null || year == '' || year == 'SELECT YEAR') {
			vehicleErrors.push("year");
			error = true;
		}
		var make = this.makeCombo.getValue().toUpperCase();
		if(make == null || make == '' || make == 'SELECT MAKE') {
			vehicleErrors.push("make");
			error = true;
		}
		var model = this.modelCombo.getValue().toUpperCase();
		if(model == null || model == '' || model == 'SELECT MODEL') {
			vehicleErrors.push("model");
			error = true;
		}

		if(error) {
			if (vehicleErrors.length != 0) {
				if (vehicleErrors.length == 1)
					vMessage = " " + vehicleErrors[0];
				else
					for (var i = 0 ; i < vehicleErrors.length ; i++) {
						if (i != 0 && vehicleErrors.length != 2)
							vMessage += ","
						if (i == vehicleErrors.length - 1)
							vMessage += " and"
						vMessage += " " + vehicleErrors[i];
					}
			}
			if (zipMessage != "" && vMessage != "")
				vMessage = zipMessage + " and your vehicle" + vMessage + ".";
			else if (zipMessage != "")
				vMessage = zipMessage + ".";
			else
				vMessage = "Please enter your vehicle" + vMessage + ".";

			alert(vMessage);
			return false;
		}

		return true;
	}
};
jQuery(document).ready(function(){
	
	//fire fancybox modal
	var modals = jQuery('a.modal-link');
	if (modals.length) {
		modals.fancybox({
			'hideOnContentClick': false,
			'titleShow': false
		});
	}
	
    (function($){$.formatCurrency=function(num){num = num.toString().replace(/\\$|\,|\s/g, '');
		if (isNaN(num)) num = '0';
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num * 100 + 0.50000000001);
		cents = num % 100;
		num = Math.floor(num / 100).toString();
		if (cents < 10) cents = '0' + cents;
		for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
				num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
		return (((sign) ? '' : '-') + '$' + num + '.' + cents);};})(jQuery);
});


	
	
function go_link(page,width,height){
	if ((1000 > width) && (1000 > height)){
		window.open(page,"go_link", "scrollbars=yes,width=" + width + ",height=" + height + ",resizable=no")
	}
}

function popup(page) {
	go_link(page, 447, 570);
}

function popupAndAppt(page) {
	popup(page);
	window.location.href = '/appointment/setup.action';
}

function popupAndAppt(page, apptParams) {
	if (apptParams == null || apptParams == '') {
		popup(page);
		window.location.href = '/appointment/setup.action';
	} else {
		popup(page);
                var s = unescape(apptParams);
                s = s.replace('%', 'percent');
                s = escape(s);
                //alert(s);
		window.location.href = '/appointment/selectStore.jsp?pricing=true&'+s;
	}
}
function submitNavLocator() {
    var zip = document.forms['sl_form'].navZip.value;
    var ok = isValidZipCode(zip);

    if(!ok)
        alert("Please enter a valid, 5-digit ZIP code");
   // else
   //     ok = !addressHelper.geocodeAndThenSubmitForm(zip.replace(/ /, ""), 'sl_form', 'navGeoPoint');

    return ok;
}

function isValidZipCode(zip)
{
   var re = new RegExp(/^\d{5}([\-]\d{4})?$/);
   return (re.test(zip));
}


