var lastOfferTitle = "";
var lastOfferCode = "";
var spoHeaderArray = new Array();
var selectedModel="";

function specialOffer(id, modelId, shortDesc, longDesc, legalDesc, savings, endDate, image, type, headerPath, title) {
	this.id = id;
	this.modelId = modelId;
	this.shortDesc = shortDesc;
	this.longDesc = longDesc;
	this.savings = savings;
	this.legal = legalDesc;
	this.endDate = endDate;
	this.title = title;
	this.type = type;
	this.image = image;
	this.headerPath = headerPath;
}

function displayFirstOffer() {
	var query = location.search.substring(1);

	//query could be modelId=100018&loc=en-us or loc=en-us for example

	var qSplit = query.split("&");
	if (query != "" && typeof(qSplit[0]) != "undefined") {
		//this is sort of a hack, fix it better later
		if(qSplit[0].split("=")[0].substr(0, 3) == 'loc') {
			displayOffer('all');
		} else if (typeof(qSplit[1]) != "undefined" && qSplit[1].substr(0, 8) == "showForm") {
		    //I don't think this condition ever happens
			showForm(19);
			displayOffer(qSplit[0].split("=")[1], true);
		} else if(qSplit[0].split("=")[0] == 'modelId' ){
			displayOffer(qSplit[0].split("=")[1]);
		} else { 
			displayOffer('all');
		}

	} else {
		displayOffer('all');
	}
}

//move this somewhere better
function remove(s, t) {

  /*
  **  Remove all occurrences of a token in a string
  **    s  string to be processed
  **    t  token to be removed
  **  returns new string
  */
  i = s.indexOf(t);
  r = "";
  if (i == -1) return s;
  r += s.substring(0,i) + remove(s.substring(i + t.length), t);
  return r;

 }


function displayOffer(listId, dontHide) {

	listId = remove(listId, '&loc=en-us');
	listId = remove(listId, '&loc');

	offerDiv = getItem("offerDisplay");
	hdrTitle=getItem("headerTitle");
	offerString = "";
	rfqForm = getItem('spoRfqForm');
	if (!dontHide) {
		//hideForm();
		rfqForm.style.display = 'none';
		getItem('offerDisplay').style.display = 'block';
	}
	containerDiv = rfqForm.parentNode.parentNode;
	containerDiv.style.height = "";
	var sortingArray = new Array();

	// there is always a listId, but it may be empty
	//load all the offers for the model id (could be model id 'all') into sortingArray
	for (offer in specialOffers["model" + listId + "key"]) {
		sortingArray.push(offer);
	}

	/* determine the header, either a global, or model specific
	if (listId == "all") {
		getItem("spoHeaderImg").src = allOfferHeaderSrc;
	} else {
		try {
			getItem("spoHeaderImg").src = specialOffers["model" + listId + "key"][sortingArray[0]].headerPath;
		} catch (e) {}
	}*/

	//Omniture Tracking
	var selectedModel = $('#offerSel option:selected').text();
	selectedModel = $.trim(selectedModel);
	var modelYear = "";
	var modelName = "";
	var pageName = "mc:vehicle:shop:offers:form";

	if(selectedModel != "All Models") {
		modelYear = selectedModel.slice(0, 4);			
		modelName = selectedModel.slice(5);
		modelName = modelName.toLowerCase();
		var model_name = modelName.replace(" ", ""); 
		pageName = "mc:vehicle:shop:offers:form:" + model_name + modelYear;
	}
	var omnitureString = "var s=s_gi(omnitureVehicleSuite);s.linkTrackVars='channel,server,eVar1,eVar2,eVar12,prop1,prop2,prop19,prop20,prop21,events';s.linkTrackEvents='event5,event16';s.pageName='" + pageName + "';s.channel='vehicle';s.server='Mitsubishi Cars';s.prop1='" + modelYear + "';s.prop2='" + modelName + "';s.prop19='mc:vehicle:shop:offers:form';s.prop20='shop';s.prop21='offers';s.eVar1='" + modelYear + "';s.eVar2='" + modelName + "';s.eVar12='mc:vehicle:shop:offers:form';s.events='event5,event16';s.tl(this);return false;";
	
	var firstTimeThrough = true;
	for (var i = 0; i < sortingArray.length; i++) {

		curOffer = specialOffers["model" + listId + "key"][sortingArray[i]];
		// new offer
		if ((curOffer.title != lastOfferTitle) || (firstTimeThrough) || (curOffer.type=0)) {
			firstTimeThrough = false;
			//Close previous spoItem
			if (offerString != "") { offerString += "</div>"; }
			offerString += "<div class='container topDotted' style='padding-top: 25px;margin-top: 25px;'>";
			offerString += "	<div class='floatRight'>"+curOffer.image+"</div>";
			offerString += "	<div class='column50'>";

			// don't show title for special offers
			if (curOffer.type == 19) offerString += "	<h3>"+curOffer.title+"</h3>";

			offerString += "	<h3 class='flushTop'>"+curOffer.shortDesc+"</h3>";
			offerString += "	<p>"+curOffer.longDesc+"</p>";
			offerString += "	<p class='disclaim'>"+curOffer.legal+"</p>";

			if(curOffer.type != 99){
				// rebate
				offerString += "	<p><a href=\"#\" onClick=\"javascript:showForm(" + curOffer.type + "); " + omnitureString + "\">"+spoLinkText+"</a></div></div>";
				//offerString += "	<p><a href=\"/MMNA/jsp/quote.do?modelId=" + listId + "&offerId=zz\" " + omnitureString + "\">"+spoLinkText+"</a></div></div>";
			}
		} else { //More offers for the same combination of vehicles
				offerString += "	<div style='padding-top: 8px;'><h3>"+curOffer.shortDesc+"</h3><p>"+curOffer.longDesc+"</p>";
				offerString += "	<p class='disclaim'>"+curOffer.legal+"</p>";
				if(curOffer.type != 99){
					offerString += "	<p><a href=\"#\" onClick=\"javascript:showForm(" + curOffer.type + "); " + omnitureString + "\">"+spoLinkText+"</a></div></div>";
					//offerString += "	<p><a href=\"/MMNA/jsp/quote.do?modelId=" + listId + "&offerId=cc\" " + omnitureString + "\">"+spoLinkText+"</a></p>";
				}
		}

		//Close last spoItem
		offerString += "</div>";
		offerDiv.innerHTML = offerString;
		lastOfferTitle = curOffer.title;
		lastOfferCode = curOffer.type;
		spoHeader="Special Offers:  " + curOffer.title;

	}

	if (offerDiv.innerHTML == "") {
		offerDiv.innerHTML = noOffersCopy;
		showFormNoOffers(0);
	}

  if (listId == "all") 
  {
	  lastOfferTitle = "";
	  spoHeader="Special Offers:  All Models";
  }
  hdrTitle.innerHTML=spoHeader;
  //insertSwfHeader(spoHeader);
  
  // dart tagging added 4.15.11
  var axel = Math.random() + "";
  var a = axel * 10000000000000;
  $("#pageContent").append('<iframe src="http://fls.doubleclick.net/activityi;src=1033846;type=fy11c403;cat=fy11c678;ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>');
}

var showHideElements = new Array();
showHideElements.push("offerSel");
showHideElements.push("phoneType");
showHideElements.push("state");
//showHideElements.push("timeframe");
var locNavOpen = false;

function showHideFields() {

	var offerFormDiv = getItem('spoRfqForm');

	var elementCount = (offerFormDiv.style.display != "block")?1:showHideElements.length;
	var startCount = 0;
	if(locNavOpen) startCount = 1;

	for(var i = startCount; i < elementCount; i++) {
		var elemRef = getItem(showHideElements[i]);
		if(elemRef) {
			if(elemRef.style.display != "none") {
				elemRef.style.display = "none";
			}
			else {
				elemRef.style.display = "block";
			}
		}
	}
}

function recordZip() {
	sessionZipCode = getItem('spoZip').value;
	zipArgs = "zipCode=" + sessionZipCode;
	//Send zip to servelet for validation
	makeRequest('/MMNA/validateZip.do', zipArgs, 'eval(setZip(http_request[i].responseText));');
}

function setZip(isValid) {
	if(isValid) {
		getItem('spoZipText').innerHTML = zipValidMsg;
	} else {
		//Display error messaging
		getItem('spoZipText').innerHTML = zipInvalidMsg;
	}
}

function checkZip() {
	if (sessionZipCode != "") {
		setZip(true);
	}
}

function showForm(offerType) {
	$("#introSpecialOffers").show();
	rfqDiv = getItem('spoRfqForm');
	rfqDiv.style.top = getItem('offerDisplay').offsetTop;
	rfqDiv.style.display = 'block';
	formDiv = getItem('form');
	formDiv.style.display = 'block';
	formDiv.style.position = 'relative';
	getItem('offerDisplay').style.display = 'none';
	//getItem(offerTypeField).value = offerType;
	containerDiv = rfqDiv.parentNode.parentNode;

	for(var i = 1; i < showHideElements.length; i++) {
		var elemRef = getItem(showHideElements[i]);
		if(elemRef) {
			elemRef.style.display = "block";
		}
	}
	window.scrollTo(0, 0);

	//write the doubleclick tracker for special offer form start
	var axel = Math.random()+"";
	var a = axel * 10000000000000;
	getItem('specialOfferFormView').innerHTML = '<IFRAME SRC="http://fls.doubleclick.net/activityi;src=1033846;type=elead741;cat=speci629;ord='+ a + '?" WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME>';

}

function showFormNoOffers(offerType) {
	if (failedFields.length > 0) {
		for (i = 0; i < failedFields.length; i++) {
			try {
				failedDiv = getItem(failedFields[i] + "div");
				failedDiv.className = "commonOfferField";
			} catch (e) {}
		}
	}
	rfqDiv = getItem('spoRfqForm');
	rfqDiv.style.top = (parseInt(getItem('offerDisplay').offsetTop) + 20) + "px";
	rfqDiv.style.display = 'block';
	formDiv = getItem('form');
	formDiv.style.display = 'block';
	formDiv.style.position = 'relative';
	//getItem('offerDisplay').style.visibility = 'hidden';
	getItem(offerTypeField).value = offerType;
	containerDiv = rfqDiv.parentNode.parentNode;
	if (navigator.userAgent.indexOf("Safari/4") == -1) {
		containerDiv.style.height = (rfqDiv.offsetHeight + rfqDiv.offsetTop - containerDiv.offsetTop + 20) + "px";
	} else {
		containerDiv.style.height = (formDiv.offsetHeight + rfqDiv.offsetTop - containerDiv.offsetTop + 20) + "px";
	}
	for(var i = 1; i < showHideElements.length; i++) {
		var elemRef = getItem(showHideElements[i]);
		if(elemRef) {
			elemRef.style.display = "block";
		}
	}
	window.scrollTo(0, 0);

}

function hideForm() {
	errorDiv = getItem('errorField');
	errorDiv.style.position = 'absolute';
	errorDiv.style.display = 'none';
	thanksDiv = getItem('commonOfferThankYou');
	//thanksDiv.style.position = 'absolute';
	thanksDiv.style.display = 'none';
	formDiv = getItem('form');
	formDiv.style.display = 'none';
	formDiv.style.position = 'absolute';
	try {
	    getItem('spoRfqForm').style.display = 'none';
	    getItem('offerDisplay').style.display = 'block';
	    containerDiv = getItem('offerDisplay').parentNode.parentNode;
	    containerDiv.style.height = (getItem('offerDisplay').offsetHeight + getItem('offerDisplay').offsetTop - containerDiv.offsetTop) + "px";
	    for(var i = 1; i < showHideElements.length; i++) {
			var elemRef = getItem(showHideElements[i]);
			if(elemRef) {
				elemRef.style.display = "none";
			}
		}
	} catch (e) {}

}

function omnitureOnModelSelect(selectedModel) {
	var modelYear = "";
	var modelName = "";
	selectedModel = $.trim(selectedModel);
	var page_name = "mc:vehicle:shop:offers:complete";
	
	if(selectedModel != "All Models") {
		modelYear = selectedModel.slice(0, 4);			
		modelName = selectedModel.slice(5);
		modelName = modelName.toLowerCase();
		
		var model_name = modelName.replace(" ", ""); 
		page_name = page_name + ":" + model_name + modelYear;
	}
	
	bubbleSequentialEvent(" var variables = [{name: 'pageName', value: '" + page_name + "'}, {name: 'eVar1', value: '" + modelYear + "'}, {name: 'eVar2', value: '" + modelName + "'}, {name: 'eVar12', value: 'mc:vehicle:shop:offers:complete'}, {name: 'prop1', value: '" + modelYear + "'}, {name: 'prop2', value: '" + modelName + "'}, {name: 'prop19', value: 'mc:vehicle:shop:offers:complete'}, {name: 'prop20', value: 'shop'}, {name: 'prop21', value: 'offers'}, {name: 'events', value: 'event5,event16'}, {name: 'products', value: ''}, {name: 'purchaseID', value: ''} ]");
}

function omnitureSpecialOffersStepOne () {
	// selectedModel is from the form, not the nav.
	var omString = ""; //Omniture string
	var omPostVars = new Array();

	var modelYear = "";
	var modelName = "";
	selectedModel = $('#modelIdOfInterest option:selected').text();
	selectedModel = $.trim(selectedModel);
	var page_Name = "mc:vehicle:shop:offers:form:select-dealer";
	var productString = "shop-offers;1";

	if(selectedModel != "- 2012 Models -" || selectedModel != "- 2011 Models -") {
		modelYear = selectedModel.slice(0, 4);			
		modelName = selectedModel.slice(5);
		modelName = modelName.toLowerCase();
		var model_name = modelName.replace(" ", ""); 
		page_Name = "mc:vehicle:shop:offers:form:" + model_name + modelYear + ":select-dealer";
		productString = "shop-offers;" + model_name + modelYear + ";1";
	}
	
	
	omPostVars.push("{name: 'pageName', value: '" + page_Name + "'}");
	omPostVars.push("{name: 'eVar1', value: '" + modelYear + "'}");
	omPostVars.push("{name: 'eVar2', value: '" + modelName + "'}");
	omPostVars.push("{name: 'eVar4', value: ''}");
	omPostVars.push("{name: 'eVar12', value: 'mc:vehicle:shop:offers:form:select-dealer'}");
	omPostVars.push("{name: 'prop1', value: '" + modelYear + "'}");
	omPostVars.push("{name: 'prop2', value: '" + modelName + "'}");
	omPostVars.push("{name: 'prop19', value: 'mc:vehicle:shop:offers:form:select-dealer'}");
	omPostVars.push("{name: 'events', value: 'event5,event16'}");
	omString = "var variables = [" + omPostVars.toString() + "]";
	bubbleSequentialEvent(omString);
}

function omnitureSpecialOffersStepTwo(dealer_string) {
	// selectedModel is from the form, not the nav. Obtained in omnitureSpecialOffersStepOne function
	var omString = ""; //Omniture string
	var omPostVars = new Array();

	var modelYear = "";
	var modelName = "";
	var page_Name = "mc:vehicle:shop:offers:form:submit";
	var productString = "shop-offers;1";

	if(selectedModel != "- 2012 Models -" || selectedModel != "- 2011 Models -") {
		modelYear = selectedModel.slice(0, 4);			
		modelName = selectedModel.slice(5);
		modelName = modelName.toLowerCase();
		var model_name = modelName.replace(" ", ""); 
		page_Name = "mc:vehicle:shop:offers:form:submit:" + model_name + modelYear;
		productString = "shop-offers;" + model_name + modelYear + ";1";
	}
	
	omPostVars.push("{name: 'pageName', value: '" + page_Name + "'}");
	omPostVars.push("{name: 'eVar1', value: '" + modelYear + "'}");
	omPostVars.push("{name: 'eVar2', value: '" + modelName + "'}");
	omPostVars.push("{name: 'eVar4', value: ''}");
	omPostVars.push("{name: 'eVar12', value: 'mc:vehicle:shop:offers:form:submit'}");
	omPostVars.push("{name: 'eVar28', value: '" + dealer_string + "'}");
	omPostVars.push("{name: 'prop1', value: '" + modelYear + "'}");
	omPostVars.push("{name: 'prop2', value: '" + modelName + "'}");
	omPostVars.push("{name: 'prop12', value: '" + dealer_string + "'}");
	omPostVars.push("{name: 'prop19', value: 'mc:vehicle:shop:offers:form:submit'}");
	omPostVars.push("{name: 'events', value: 'event4,event5,event16,purchase'}");
	omPostVars.push("{name: 'products', value: '" + productString + "'}");
	omPostVars.push("{name: 'purchaseID', value: '" + transactionId + "'}");
	omString = "var variables = [" + omPostVars.toString() + "]";
	bubbleSequentialEvent(omString);
}


// new dropdown loaders
function build_year_dropdown (yearObj) {
	for (i = -1; i < 20; i++) {
		year = new Date().getFullYear() - i;
		yearObj[0].options[i+2] = new Option(year, year);
	}
}

function build_make_dropdown (makeObj, modelObj) {
	$.getJSON (json_loc, function (data) {
		$.each (data, function (key, value) {
			var make_id = "_cur_make:" + key;
			makeObj[0].options[key+1] = new Option (value.brand_name, value.brand_name);
			$(makeObj[0].options[key+1]).attr("id", make_id);
		});
		
		// attach listener
		makeObj.change ( function () {
			var objRef = this;
			if (objRef.options.length > 1) {
		        if (objRef.selectedIndex > 0) { // disregard "select make"
		        	$.getJSON (json_loc, function (data) {
		        		build_model_dropdown (data[$(objRef.options[objRef.selectedIndex]).attr("id").split(":")[1]].models, modelObj);
		        	});			        
			    }
			} else {
				//console.log ("please wait");
			} 
				
		});
	});
}

function build_model_dropdown (modelArray, modelObj) {
	for (var i=1;i<modelObj[0].options.length-1;i++) {
		modelObj[0].options.remove(i);
	};
	
	for (var j=1;j<=modelArray.length;j++) {
		modelObj[0].options[j] = new Option (modelArray[j-1], modelArray[j-1]);		
    };
}

var json_loc = "/MMNA/javascript/json/current_vehicle.json";
