//
// COPYRIGHT (c) 2006 GMAC	All Rights Reserved
//

// SelectVehicle-specific functions

	function loadDma()
	{

		var countySelect = document.getElementById("county")
		var dmaCodeSelect = document.getElementById("dmaCode")

		if(countySelect == null || countySelect == undefined || countySelect.selectedIndex == -1)
			return;
		
		var county = countySelect.options[countySelect.selectedIndex].value		
		countDmaByCounty = 0;		
		dmaCodeSelect.options.length = 0
		for(var i = 0; i < dmaList.length; i++) {			
			if (dmaList[i].countyCode == county) {	
				AuxDmaList = dmaList[i].countyCode;			
		    	if (AuxDmaList == dmaList[i].countyCode){
		    		countDmaByCounty++;
		    	}			    	
				dmaCodeSelect[dmaCodeSelect.length] = new Option(dmaList[i].dmaDesc, dmaList[i].dmaCode)						
			}			
		}

		if (countDmaByCounty >=2){		
			showElement("dmaCode")
			showElement("dmaCodeLabel")
		} else{
			hideElement("dmaCode")
			hideElement("dmaCodeLabel")
		}
		
		var pos = countySelect.selectedIndex
		
		if ( pos != 0 && pos != -1) { // if first ou none select 
			if ( document.getElementById("countyName") != undefined ) { 
				document.getElementById("countyName").value = countySelect.options[countySelect.selectedIndex].text
			}
		} else { 
		
			if ( document.getElementById("countyName") != undefined ) { 
				document.getElementById("countyName").value = ""
			}
		}
		
	}
	

	function onYearSelection() 
	{
	    var yearSelect = document.getElementById("year")
	    var makeSelect = document.getElementById("make")
	    var modelSelect = document.getElementById("model")
	    var trimSelect = document.getElementById("trim")
	    
	    loadMake()

	    // Clear all the dropdowns below
	    modelSelect.options.length = 1
	    trimSelect.options.length = 1
	    
	    if(s) s.eVar3 = yearSelect.options[yearSelect.selectedIndex].text
	}
	
	// GM Card Earning related fields should be not be available for 
	// for Saturn vehicle.
	function hideGMCardEarningFields()
	{
	    var gmcardPoints = document.getElementById("cardPoints")	
	    var gmcardearningsConfirmChangeVal = document.getElementById("checkgmcardearnings")	
	    var saturnMessage = document.getElementById("saturnMessageForGMCardEarning")	
	    
	    // Disable the GM Card Earning text box
	    gmcardPoints.disabled = true;
	    // Remove the gm card points link text
	    gmcardearningsConfirmChangeVal.style.display = 'none';
	    // Display the new text for Saturn vehicle
  	    saturnMessage.style.display = 'block';
	}
	
	// GM Card Earning related fields should be  be available for 
	// for all the vehicles other than Saturn.
	function showGMCardEarningFields()
	{
	    var gmcardPoints = document.getElementById("cardPoints")	   	    	    
	    var gmcardearningsConfirmChangeVal = document.getElementById("checkgmcardearnings")	
   	    var saturnMessage = document.getElementById("saturnMessageForGMCardEarning")	
        
            // Enable the GM Card Earning text box
            gmcardPoints.disabled = false;
            // Display the gm card points link text
	    gmcardearningsConfirmChangeVal.style.display = 'block';
	    // Remove Saturn specific new text 
	    saturnMessage.style.display = 'none';
	}
	
	function onMakeSelection() 
	{
	    var yearSelect  = document.getElementById("year")
	    var makeSelect  = document.getElementById("make")
	    var makeName    = document.getElementById("makeName")
	    
	    var modelSelect = document.getElementById("model")
	    var trimSelect  = document.getElementById("trim")
	    
            makeName.value  = makeSelect.options[makeSelect.selectedIndex].text;
	    
	    var makeCode  = makeSelect.options[makeSelect.selectedIndex].value;
	    
	    // Checking whether Saturn is the selected vehicle.
	   // if(makeCode == '008'){
	    //	hideGMCardEarningFields();
	   //  } else {
		showGMCardEarningFields();
	  //  }
	    
	    loadModel()
	    
	    // Clear the Trim dropdown
	    trimSelect.options.length = 1
	    
	    if(s) s.eVar4 = makeName.value
	}
	
	function onModelSelection() {
		bCancel = true
	    var makeSelect  = document.getElementById("make")
		var makeName    = document.getElementById("makeName")
	    var modelSelect = document.getElementById("model")
		var modelName   = document.getElementById("modelName")
		
		var countySelect = document.getElementById("county")
      	        var dmaCodeSelect = document.getElementById("dmaCode")
		if(countySelect) {
	        countySelect.disabled = true
	        dmaCodeSelect.disabled = true
	        document.getElementById("countyName").value = ""
	        document.getElementById("dmaName").value  = ""
		}
	    document.getElementById("loadTrim").value = "true"
	    document.getElementById("showGrid").value = "false"
	    
	    makeName.value  = makeSelect.options[makeSelect.selectedIndex].text
	    modelName.value  = modelSelect.options[modelSelect.selectedIndex].text
	    if(s) s.eVar5 = modelName.value
	    
	    document.forms[0].submit()
	}
	
	//sort in ascending order
	function compareOptions(a, b) {
		if (a.text == b.text) return 0
		return a.text < b.text ? -1 : 1
	}
	
	function insertOptions(dropdown, optionArray) {
	 	optionArray.sort(compareOptions)
	 	for(var i = 0; i < optionArray.length; i++) {
	 		dropdown.options[dropdown.length] = optionArray[i]
	 	}
	}
	
	function loadYear() {
	    var yearSelect = document.getElementById("year")

	    yearSelect.options.length = 1
		var yearOptions = []
	 	for (var i = 0; i < carArray.length; i++) {
		    var matchFound = false
			var currentCar = carArray[i]
			for(var j = 0; j < yearOptions.length; j++) {
				//if we have a match, escape the loop
				if(currentCar.year == yearOptions[j].value) {
					matchFound = true
					break
				}
			}
			if(!matchFound) {
				yearOptions[yearOptions.length] = new Option(currentCar.year,currentCar.year)
			}
		}
		insertOptions(yearSelect,yearOptions)
	}
	
	function loadMake() 
	{
	    var yearSelect = document.getElementById("year")
	    var makeSelect = document.getElementById("make")
	    
	    // Clear the dropdown
	    makeSelect.options.length = 1
	    
	    //Populate the make dropdown again
	    var currentYear = yearSelect.options[yearSelect.selectedIndex].value;
		var makeOptions = []
	 	for (var i = 0; i < carArray.length; i++)
		{
			var currentCar = carArray[i]
		    if(currentCar.year == currentYear) {
		    	var matchFound = false
		    	for(var j = 0; j < makeOptions.length; j++) {
					//if we have a match, escape the loop
					if(currentCar.makeCode == makeOptions[j].value) {
						matchFound = true
						break
					}
				}
				if(!matchFound) {
					makeOptions[makeOptions.length] = new Option(currentCar.makeDesc,currentCar.makeCode)
				}
			}
		}
		insertOptions(makeSelect,makeOptions)
		
		
		
	}

	function loadModel() 
	{
	    var yearSelect = document.getElementById("year")
	    var makeSelect = document.getElementById("make")
	    var modelSelect = document.getElementById("model")
	    
	    // Clear the dropdown
	    modelSelect.options.length = 1
	    
	    //Populate the Model dropdown again
	    var currentYear = yearSelect.options[yearSelect.selectedIndex].value;
	    var currentMake = makeSelect.options[makeSelect.selectedIndex].value;
		var modelOptions = []
	 	for (var i = 0; i < carArray.length; i++) {
			var currentCar = carArray[i]
		    if(currentCar.year == currentYear && currentCar.makeCode == currentMake) {
		    	var matchFound = false
				for(var j = 0; j < modelOptions.length; j++) {
					//if we have a match, escape the loop
					if(currentCar.modelCode == modelOptions[j].value) {
						matchFound = true
						break
					}
				}
				if(!matchFound) {
					modelOptions[modelOptions.length] = new Option(currentCar.modelDesc,currentCar.modelCode)
				}
			}
		}

		insertOptions(modelSelect,modelOptions)
	}
	
	function submitSelectVehicle(msgCounty,msgDMA,msgZip) {

		putZeroOnLeft();
		if(doZIP(document.forms[0].zipCode.value)==false){
			alert(msgZip);
			document.forms[0].zipCode.select();
			document.forms[0].zipCode.focus();
			return false;
		}
		isValid  = validateSelectVehicleActionForm(document.forms[0]) && validateFieldSum();
		if (!isValid) {
			return false;
		}
	    
	    document.getElementById("loadTrim").value = 'true'
	    document.getElementById("showGrid").value = 'true'
		
	    var makeSelect = document.getElementById("make")
	    document.getElementById("makeName").value  = makeSelect.options[makeSelect.selectedIndex].text;
	    var modelSelect = document.getElementById("model")
	    document.getElementById("modelName").value  = modelSelect.options[modelSelect.selectedIndex].text;
	    var trimSelect  = document.getElementById("trim")
	    document.getElementById("trimName").value  = trimSelect.options[trimSelect.selectedIndex].text;
	    
	    
	    var countySelect = document.getElementById("county")
	    if(countySelect) {
	    	var posContry = countySelect.selectedIndex
	    	if (posContry != -1){
	    		document.getElementById("countyName").value	= countySelect.options[countySelect.selectedIndex].text;
		    } else { 
		    	document.getElementById("countyName").value	= ""
		    }
		}

	    var dmaSelect = document.getElementById("dmaCode")
		if(dmaSelect) {
			var posModel = dmaSelect.selectedIndex
			if (posModel != -1) {
		    	document.getElementById("dmaName").value  = dmaSelect.options[dmaSelect.selectedIndex].text;
		    } else {
		    	document.getElementById("dmaName").value  = ""
		    }
		}
	    document.getElementById("regionName").value  = ""
	    
	    var creditRatingSelect = document.forms[0].creditRatingCode
	    var creditCode = ''
	    if(!creditRatingSelect.length) {
	    	creditCode = creditRatingSelect.value
	    }
	    else {
	    	for(i = 0; i < creditRatingSelect.length; i++) {
	    		var opt = creditRatingSelect[i]
	    		if(opt.checked) {
	    			creditCode = opt.value
	    		}
	    	}
	    }
	    if(ratingMap != undefined) {
	    	document.getElementById("creditRatingName").value  = ratingMap[creditCode]
	    }
	    
	    return true;
	}

// Grid-specific functions

	function submitGrid(payment) {
		form = document.forms[0]
		
		form.financeOption.value	= payment.financeOption
		form.programNumber.value	= payment.programNumber
		form.programID.value		= payment.programID
		form.programStartDate.value = payment.programStartDate
		form.programEndDate.value	= payment.programEndDate
		form.programName.value		= payment.programName
		form.consumerFriendlyName.value = payment.consumerFriendlyName

		form.estMonthlyPayment.value = payment.estMonthlyPayment
		form.term.value	= payment.term
		form.incentiveCash.value	= payment.incentiveCash

		form.capitalCostReduce.value = payment.capitalCostReduce || ""
		form.downPaymentAssistAmount.value = payment.downPaymentAssistAmount || ""

		form.cash.value = payment.cash || ""
		form.showSummary.value = true
		
		if (document.getElementById("annualMiles")!=undefined){
			
			var milesText         = document.getElementById("annualMiles")
			var milesTextSelected = milesText.options[milesText.selectedIndex].text
			form.annualMilesDesc.value = milesTextSelected.substr(0, milesTextSelected.indexOf(' '))
		}
		form.submit();
		
	}
	
	
	function submitAnnualMiles() {
		form = document.forms[0]
		form.showSummary.value = false

		var milesText         = document.getElementById("annualMiles")
		var milesTextSelected = milesText.options[milesText.selectedIndex].text
		form.annualMilesDesc.value = milesTextSelected.substr(0, milesTextSelected.indexOf(' '))

		form.submit()
	}


// General purpose functions

	
	function selectInitialOption(dropdownId, requestValue) {
	    var dropdown = document.getElementById(dropdownId)
	    if(dropdown != null) {
		 	for (var i = 0; i < dropdown.options.length; i++) {
				if(dropdown.options[i].value == requestValue) {
					dropdown.selectedIndex = i
				}
			}
		}
	}

	function selectInitialOptionByText(dropdownId, requestText) {
	    if(dropdown != null) {
		    var dropdown = document.getElementById(dropdownId)
		 	for (var i = 0; i < dropdown.options.length; i++) {
				if(dropdown.options[i].text == requestText) {
					dropdown.selectedIndex = i
				}
			}
		}
	}
	
	function showElement(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			htmlElement.style.visibility = 'visible'
		}
	}
	
	function hideElement(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			htmlElement.style.visibility = 'hidden'
		}
	}

	function toggleElement(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			if(htmlElement.style.visibility == 'visible') {
				htmlElement.style.visibility = 'hidden'		
			} else {
				htmlElement.style.visibility = 'visible'
			}
		}
	}
	
	var shownElement = null
		
	function showPopUp(elementId) {
		if(shownElement != null) {
			shownElement.style.visibility = 'hidden'
		}
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			htmlElement.style.visibility = 'visible'
		}
		shownElement = htmlElement
	}

	function hidePopUp(elementId) {
		var htmlElement = document.getElementById(elementId)
		htmlElement.style.visibility = 'hidden'
		if(shownElement == htmlElement) {
			shownElement = null
		}
	}

	function togglePopUp(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			if(htmlElement.style.visibility == 'visible') {
				htmlElement.style.visibility = 'hidden'		
				if(shownElement == htmlElement) {
					shownElement = null
				}
			} else {
				htmlElement.style.visibility = 'visible'
				if(shownElement != null) {
					shownElement.style.visibility = 'hidden'
				}
				shownElement = htmlElement
			}
		}
	}


	function hideElementError(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			htmlElement.style.visibility = 'hidden'
		}
	}

	function toggleElementError(elementId) {
		var htmlElement = document.getElementById(elementId)
		if ( htmlElement != null) { 
			if(htmlElement.style.visibility == 'visible')
				htmlElement.style.visibility = 'hidden'		
			else
				htmlElement.style.visibility = 'visible'
		}
	}
	
	function reformatCurrency(field)
	{
		var reformatRegex = /(\d+)(\d{3})/
		var splitNumber = field.value.replace(/,/g,'').split('.')
		var integerPart = splitNumber[0]
		while (reformatRegex.test(integerPart)) {
			integerPart = integerPart.replace(reformatRegex, '$1' + ',' + '$2')
		}
		var decimalPart = (splitNumber.length > 1) ? ('.' + splitNumber[1] + '00').substr(0,3) : '.00'
		field.value = integerPart + decimalPart
	}
	
	function doZIP(pStr) {
		var reDigits = /^\d+$/;
		if (pStr == null || pStr == "" || pStr.length<5) {
			return false;
		}else if (reDigits.test(pStr)==false) {
			return false;
		}else return true;
	}
	
	
	function putZeroOnLeft(){
		form = document.forms[0];
		tradeIn = 	form.tradeInValue.value;
		sellingPrice=form.sellingPrice.value;
		downPayment= form.downPayment.value;
		cardPoints=form.cardPoints.value;
		
		if(tradeIn.length>0 && (tradeIn.substring(0,1)=="." || tradeIn.substring(0,1)==",")){
			form.tradeInValue.value="0"+tradeIn;
		}
		
		if(sellingPrice.length>0 && (sellingPrice.substring(0,1)=="." || sellingPrice.substring(0,1)==",")){
			form.sellingPrice.value="0"+sellingPrice;
		}
		if(downPayment.length>0 && (downPayment.substring(0,1)=="." ||downPayment.substring(0,1)=="," )){
			form.downPayment.value="0"+downPayment;
		}
		if(cardPoints.length>0 && (cardPoints.substring(0,1)=="." || cardPoints.substring(0,1)=="," )){
			form.cardPoints.value="0"+cardPoints;
		}if(cardPoints==""){
			form.cardPoints.value="0";		
		}
	}
	
	
	function loadCountyAfterButton(){
	  	var _cName = document.getElementById("countyName")
	  	if (_cName.value != "" ) {
	  		selectInitialOptionByText('county', _cName.value);
	  		loadDma()
	  	}
	  	
	  	var _dName = document.getElementById("dmaName")
		if (_dName.value != "" ) {
	  		selectInitialOptionByText('dmaCode', _dName.value);
	  	}

	}
	
function token(trimObject, inicio){  

  	enable=false;
  
  
  	trims =trimObject.options[trimObject.selectedIndex].text;
  	
  	var result = trims.split(inicio);
  	
	if(result.length>1){
	 
		if(result[1].substring(0,4)=="MSRP"){
			enable=true;
		}
	}else if(trims.substring(0,1)=='-'){
		enable =true;
	}
	if (enable==true){
		return true;
	}else return false;
	

 }

 //Change: To open Terms & Conditions page in a new window

function openInNewWindow(path, width, height){
var newWindow = window.open(path,'chdWin','width=' + width + ',height=' + height + ',toolbar=no,titlebar=yes,scrollbars=yes');

 if (window.focus) {newWindow.focus()} 
	return false;
}

