var hrefLocation = location.href.toLowerCase();

/*protocol overide for SSL*/
function getHostCleanedForSSL() {
     return (location.protocol == "http:") ? ("http://" + location.host) : ("https://" + location.host + "/hostb"); 
}

function decode_html_entities(data) {
	var matches = data.match(/&#\d+;?/g);

	if (matches) {
		for (var i = 0; i < matches.length; i++) {
			var replacement = String.fromCharCode((matches[i]).replace(/\D/g,""));
			data = data.replace(/&#\d+;?/,replacement);
		}
	}
	
	return data;
}


var original_headline;
function populate_dealerInfo() {
	var scd0 = cllc.constants.get('BRAND') + " " + glossary_label_vs_competition;
	var scd1 = cllc.constants.get('BRAND') + " " + glossary_label_vehicles;
	shop_compare_data[0] = "<a href='javascript:submitNoFormCompare(\"edmunds\")' name='&lid=shop_compare_vehicles_"+scd0+"&lpos=global_nav_top'>"+scd0+"</a>";
	shop_compare_data[1] = "<a href='javascript:submitNoFormCompare(\"vehicleselector\")' name='&lid=shop_compare_vehicles_"+scd1+"&lpos=global_nav_top'>"+scd1+"</a>";
	
	if(typeof(cur_vehicle) != "undefined" && cur_vehicle != "" && cur_year != "") {		
		if(vehicle_data[cur_year][cur_vehicle].flags.compare == true) {
			var scd2 = glossary_label_all + " " + decode_html_entities(vehicle_data[cur_year][cur_vehicle].display) +"s";
			shop_compare_data[2] = "<a href='javascript:submitNoFormCompare(\"vehiclespecs\");' name='&lid=shop_compare_vehicles_"+scd2+"&lpos=global_nav_top'>"+scd2+"</a>";
		}
		
		/* hide MOM GAQ button when vehicle 'get_a_quote' flag is set to false */
		var gaq_div_mom = $('mom_wrapper');
		/* Added for the new pricing link -- just on Dodge */
		var gaq_pricing = $('pricing_gaq');
		var GAQ = vehicle_data[cur_year][cur_vehicle].flags.get_a_quote;
		
		if(gaq_div_mom && GAQ == false) gaq_div_mom.style.display = "none";
		/* Added for the new pricing link -- just on Dodge */
		if(gaq_pricing && GAQ == false) gaq_pricing.style.display = "none";
		
		
		/* hide MOM SI button when vehicle 'inventory' flag is set to false */
		var si_div_mom = $('mom_si');
		var SI = vehicle_data[cur_year][cur_vehicle].flags.inventory;
		
		if(si_div_mom && SI == false) si_div_mom.style.display = "none";
		
		
		/* hide MOM BMO button when vehicle 'build' flag is set to false */
		var bmo_div_mom = $('mom_bmo');
		var BMO = vehicle_data[cur_year][cur_vehicle].flags.build;
		
		if(bmo_div_mom && BMO == false) bmo_div_mom.style.display = "none";
		
		/* hide MOM Specs and Upgrades button when vehicle 'get_a_quote' flag is set to false */
		var su_div_mom = $('mom_su');
		var SU = vehicle_data[cur_year][cur_vehicle].flags.compare;
		
		if(su_div_mom && SU == false) su_div_mom.style.display = "none";
	}

	/******************************/
	/*  USER HAS ENTERED ZIPCODE  */
	
	if (userData.zipcode == null) getUserData("skipPrefSets");
	
	//DO NOT SHOW DIMA/PD FOR THESE SITES
	var onRamTrucks = (location.host.indexOf('ramtrucks.com') >= 0 || location.pathname.indexOf('default/main/US/RamTruck') >= 0) ? true : false;
	var onChrysler = (location.host.indexOf('chrysler.com') >= 0 || location.pathname.indexOf('default/main/US/Chrysler') >= 0) ? true : false;
	var onDodge = (location.host.indexOf('dodge.com') >= 0 || location.pathname.indexOf('default/main/US/Dodge') >= 0) ? true : false;
	var onJeep = (location.host.indexOf('jeep.com') >= 0 || location.pathname.indexOf('default/main/US/Jeep') >= 0) ? true : false;
	if (userData.zipcode != null && !onRamTrucks && !onChrysler && !onDodge && !onJeep) {
	
		var my_local_zipcode_copy = userData.zipcode;		
		
		// var dealer_menu for adding local dealers
		var dealer_menu = $('dealer_menu');
		var dealer_title = dealer_menu.getFirst();
		var dealer_info = $('dealer_info');
		
		// var original menu headline
		original_headline = original_headline || dealer_title.getText();
		
		// empty dealer_info
		dealer_info.empty();
		
		
		/** GET A QUOTE ADDITION (Models & Colors pages **/
		if ( $('model_get_quote') ) {
			var quote_div = $('model_get_quote');
			var quote_btn = quote_div.getFirst();
			var quote_form = quote_btn.getNext();
				
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.setStyles({
							'visibility': 'hidden'
					});
					
					quote_btn.getFirst().set({
							'href': 'javascript:submitQuote(document.form_model_get_quote);'
					});	
				}
				
				// if in states AZ/VA update GAQ div with message
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.removeChild(quote_form.firstChild);
					quote_form.innerHTML = "Your preferred dealer does not currently support this feature online. Please visit or call the dealership to get a quote.";
					quote_form.style.visibility = "visible";
					quote_form.style.display = "block";
					//quote_form.style.className = "";
					
					quote_btn.getFirst().set({
							'href': "#"
					});	
					
					// change dealerInfo.gaqURL to null so dealer menus will populate with message
					dealerInfo.gaqURL = null;
				}
			}
		
		/** GET A QUOTE ADDITION (Buzz model pages) **/
		if ( $('buzz_get_quote') ) {
			var quote_div = $('buzz_get_quote');
			var quote_btn = quote_div.getFirst();
			var quote_form = quote_btn.getNext();
				
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.setStyles({
							'visibility': 'hidden'
					});
					
					quote_btn.getFirst().set({
							'href': 'javascript:submitQuote(document.form_buzz_get_quote);'
					});	
				}
				
				// if in states AZ/VA update GAQ div with message
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.removeChild(quote_form.firstChild);
					quote_form.innerHTML = "Your preferred dealer does not currently support this feature online. Please visit or call the dealership to get a quote.";
					quote_form.style.visibility = "visible";
					quote_form.style.display = "block";
					
					quote_btn.getFirst().set({
							'href': "#"
					});	
					
					// change dealerInfo.gaqURL to null so dealer menus will populate with message
					dealerInfo.gaqURL = null;
				}
			}
		
		/** GET A QUOTE ADDITION (MOM boxes on vehicle landing pages) **/		
			if ( $('mom_get_quote') ) {
			
				var quote_div = $('mom_get_quote');
				var quote_btn = quote_div.getFirst();
				var quote_form = quote_btn.getNext();
				
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.setStyles({
							'visibility': 'hidden'
					});
					
					quote_btn.getFirst().set({
							'href': 'javascript:submitQuote(document.form_mom_get_quote);'
					});	
				}
				
				// if in states AZ/VA update GAQ div with message
				if (dealerInfo.dealerSitePointer != "3") {
					quote_form.removeChild(quote_form.firstChild);
					quote_form.innerHTML = "Your preferred dealer does not currently support this feature online. Please visit or call the dealership to get a quote.";
					quote_form.style.visibility = "visible";
					quote_form.style.display = "block";
					
					quote_btn.getFirst().set({
							'href': "#"
					});	
					
					// change dealerInfo.gaqURL to null so dealer menus will populate with message
					dealerInfo.gaqURL = null;
				}
			}
		
		/***********************************/
		if (dealerInfo.id != null) {
			/*  PREFERRED DEALER IS SET */
			
			//set models 'search inventory' title (dealer set)
			if($('model_search_inventory')) { //we're on models page
				var model_button_list_menu_div = $('model_search_inventory').getFirst();
					
				if(model_button_list_menu_div && model_button_list_menu_div.getElement('a')) {
					model_button_list_menu_div.getElement('a').setHTML(glossary_label_dealer_inventory.toUpperCase());
				}
			}
			
			// preferred dealer has been chosen
			// change div title to reflect current state
			// text set to "My Preferred Dealer"
			dealer_title.setHTML(glossary_label_glossary_label_my_pfdealer);
			
			// Changes to Dealers In My Area Menu
				// show ALL <hr>'s in menu
				changeStyles(dealer_menu, 'hr', 'display', 'block');
					
					// remomve border bottom to div
					changeStyles(dealer_info, '', 'border-bottom', 'none');
				
				// show unecessary menus
				changeStyles(dealer_menu, 'div.sub_menu', 'display', 'block');
				
			
			// take preferred dealer info
			// and build it into the
			// Preferred Dealer Menu
			buildDealersMenu(dealerInfo);
				
			// USER IS ON A VEHICLE PAGE
			if (typeof(cur_year) != "undefined" && typeof(cur_vehicle) != "undefined") {
				if (cur_year && cur_vehicle) {
						
					// query Trilogy for inventory from users set preferred dealer
					var inventory_url = "/hostd/getsearchinventorysummary.xml?"
									  + "dealerCode=" + dealerInfo.id
									  + "&modelYearCode=" + vehicle_data[cur_year][cur_vehicle].apps.model_code;
				
					var hot_deals_url = "/hostd/getsearchinventorysummary.xml?"
									  + "dealerCode=" + dealerInfo.id
									  + "&modelYearCode=" + vehicle_data[cur_year][cur_vehicle].apps.model_code;
					
						// make ajax calls for queries of inventory
						// assign the xml object to dealerInfo
						new Ajax(inventory_url, {
								method: 'get',
								onComplete: function(text, xml) {
									initializeInventoryMenus(xml); // initialize inventory menus
								}
						}).request();
						
				} else {
					// USER HAS CHANGED PFDEALERS
					// cur_year && cur_model are set to ""
					
					initializeInventoryMenus();
					
				}
			} else {
				// USER IS NOT ON A VEHICLE PAGE
				// initialize inventory menus				
				initializeInventoryMenus();
			}
			
		} else {
			/*  DEALERS IN MY AREA IS BEING DISPLAYED  */
			
			// users zipcode has been cookied
			// however a PREFERRED DEALER HAS NOT BEEN CHOSEN
			// change div title to reflect current state
			// text set to "Dealers In My Area"
			dealer_title.setHTML(glossary_label_dealers_in_my_area); // var can be found in Glossary.js
			preferred_dealer_info = "";
			
			
			// Changes to Dealers In My Area Menu
				// add "Closest Dealers" blurb
				var blurb_title = glossary_label_closest_dealers_to + ' ' + my_local_zipcode_copy + ":"; // glossary.js
				dealer_info.setHTML(blurb_title);
				
				// hide ALL <hr>'s in menu
				changeStyles(dealer_menu, 'hr', 'display', 'none');
					
					// add border bottom to div
					changeStyles(dealer_info, '', 'border-bottom', '1px solid #999999');
				
				// hide unecessary menus
				changeStyles(dealer_menu, 'div.sub_menu', 'display', 'none');
					
				// adjust sub-menu form
					// add autoclear class to div
					var zipcode_div = $('form_preferred_dealer_find').getElement('div.sub_menu_form');
					zipcode_div.addClass('autoclear');
					
			
			// query local dealers
			var local_dealers_url = "/hostd/getlocatedealersbasic.xml?zip=" + my_local_zipcode_copy + "&is"+cllc.constants.get('BRAND')+"=Y&maxListings=4";
			
				// make ajax call for query of local dealers by cookied zipcode
				var dealer_request = new Ajax(local_dealers_url, {
						method: 'get',
						onComplete: function(text, xml) {
							$('dealer_info').innerHTML = '';
							dealersRESPONSE(xml.getElementsByTagName('dealer'));
						}
				}).request();
		}
		
		// toggle dealer_menu on
		dealer_menu.setStyle('display', 'block');
		
	} else {		
		// default to dealer_finder for user to enter their zipcode
		$('dealer_finder').setStyle('display', 'block');
		
		// change user segmentation group
		setUserSegment();
	}
}



function changeStyles(parent, elements, name, value) {
	
	if (elements != '') {
		var objects = parent.getElements(elements);
	} else {
		var objects = new Array();
		objects.push(parent);
	}
	
	objects.each( function(obj) {
		obj.setStyle(name, value);	
	});
	
}



var localdealers = [];
function dealersRESPONSE(dealers) {	
	
	for (i=0; i < dealers.length; i++) {
		var dealer = dealers[i];
		localdealers[i] = new Array();
		
			localdealers[i].push( dealer.getAttribute('id') );
			localdealers[i].push( dealer.getAttribute('name') );
			localdealers[i].push( dealer.getAttribute('URL') );
			localdealers[i].push( dealer.getAttribute('address') );
			localdealers[i].push( dealer.getAttribute('city') + ", " + dealer.getAttribute('state') + " " + formatXMLValue(dealer.getAttribute('zipcode')) );
			localdealers[i].push( formatXMLValue(dealer.getAttribute('phone')) );
			localdealers[i].push( dealer.getAttribute('fivestar') );
			localdealers[i].push( dealer.getAttribute('webtools') );
			localdealers[i].push( dealer.getAttribute('distance') );
			localdealers[i].push( dealer.getAttribute('domainName') );
			localdealers[i].push( dealer.getAttribute('dealerSitePointer') );
			
		buildDealersMenu( localdealers[i] );
	}
	
	// change user segmentation group
	setUserSegment();
	
}



function buildDealersMenu(dealer_info) {
	
	// validate if dealer is set or not
	var dealer_set = ( $type(dealer_info) == 'object' ) ? true : false;
	var menu = $('dealer_info');
	var list = new Element('ul').addClass('dealer_container');
	var item = new Element('li');	
	var anch = new Element('a').setProperty('href', '#');
	var div = new Element('div').addClass('sub_menu');
	
	// preferred dealer
	if ( dealer_set == true ) {
		var id = dealerInfo.id;
		var name = dealerInfo.name;
		var url = dealerInfo.URL;
		var address = dealerInfo.address;
		var csz = dealerInfo.city + ', '
				+ dealerInfo.state + ' '
				+ dealerInfo.zipcode;
		var phone = dealerInfo.phone;
		var fivestar = dealerInfo.fivestar;
		var webtools = dealerInfo.webtools;
		var domainName = dealerInfo.domainName;
		var dealerSitePointer = dealerInfo.dealerSitePointer;
		
	// dealers in my area
	} else {
		var id = dealer_info[0];
		var name = dealer_info[1];
		var url = dealer_info[2];
		var address = dealer_info[3];
		var csz = dealer_info[4];
		var phone = dealer_info[5];
		var fivestar = dealer_info[6];
		var webtools = dealer_info[7];
		var distance = dealer_info[8];
		var domainName = dealer_info[9];
		var dealerSitePointer = dealer_info[10];
	}
	    
	    var dealerlink = "http://" + location.host;
		
		name = name.replace('&apos;',"'");
		
		// If preferred dealer is set, remove link, else show link
		if(dealer_set == true){
			var dealername = item.clone().setHTML(name).addClass('dealer_name');
		} else { 
			var dealername = item.clone().addClass('dealer_name');
			var dealeranch = anch.clone().setHTML(name).set({
					'events': {
						'click': function() {
							if(domainName.length > 1){
								esConfirm("wrap('ext_url','"+domainName+"', '', '');");
							}else{
								esConfirm("wrap('dealer_site','dealerid="+id+"', '');");
							}
						}
					},
					'href': 'javascript:linkTrack(\'dealers_in_my_area\',\'dealer_name_website_' + dealer_info[0] + '\');'
			}).injectInside(dealername);
		}
			
			dealername.injectInside(list);
		
		if (distance) item.clone().addClass('dealer_distance').setHTML(distance + ' ' + glossary_label_miles_away).injectInside(list);		
		
		item.clone().addClass('dealer_address').setHTML(address).injectInside(list);
		item.clone().addClass('dealer_csz').setHTML(csz).injectInside(list);		
		
		var phone = item.clone().addClass('dealer_phone').setHTML(phone).injectInside(list);
		
		// set appropriate preferred dealer links and map & directions link
		var pfd_item = item.clone().addClass('autoclear pfdealer_links');
				
		
			// if dealers in my area and dealer has webtools show set preferred dealer option
			
			if(dealerSitePointer == "3"){
				
				$('dealer_current_incentives').setStyle('display', 'none');
				$('dealer_schedule_a_test_drive').setStyle('display', 'none');
				$('dealer_get_a_brochure').setStyle('display', 'none');
				
				if($('dealer_no_tools')){
					$('dealer_no_tools').setStyle('display','none');
				}
				
			
				if (dealer_set == false) {
					anch.clone().setHTML(glossary_label_set_as_preferred_dealer).addEvent('click', function() {
							dealerInfo.setPreferredDealer(id);
							$('dealer_menu_container').setStyle('height', 'auto'); // take set height off of menu (un-animate)
					}).setProperty('name', '&lpos=dealer_menu&lid=set_pfdealer').injectInside(pfd_item);
				}
				
			
				// if preferred dealer
				else {	
						anch.clone().setHTML(glossary_label_change).addEvent('click', function() {
							buildPFDEALER('change');
						}).setProperty('name', '&lpos=dealer_menu&lid=change_pfdealer').injectInside(pfd_item);
			
						pfd_item.appendText(' | ');
			
						anch.clone().setHTML(glossary_label_clear).addEvent('click', function() {
							buildPFDEALER('clear');
						}).setProperty('name', '&lpos=dealer_menu&lid=clear_pfdealer').injectInside(pfd_item);
						
						// remove before duplicated
						if($('dealer_website')){
							$('dealer_website').remove();
						}
						if(!$('dealer_website')){
							div.clone().setHTML('<div class="sub_menu_btn"><a href="javascript:linkTrack(\'preferred_dealer\',\'visit_dealer_website_' + dealerInfo.id + '\');">'+glossary_label_visit_dealer_website.toUpperCase()+'</a></div>').addEvent('click', function(){
								if(domainName.length > 1){
									esConfirm("wrap('ext_url','"+domainName+"', '', '');");
								}else{
									esConfirm("wrap('dealer_site','dealerid="+id+"', '');");
								}
							}).setProperty('id','dealer_website').injectBefore('dealer_search_inventory');
						}

					// change user segmentation group 
					setUserSegment();
				}
			
			} else {
				// do not show links for dealers that cannot be set Preferred
				if(dealerSitePointer == "3"){
					anch.clone().setHTML(glossary_label_change).addEvent('click', function() {
						buildPFDEALER('change');
					}).setProperty('name', '&lpos=dealer_menu&lid=change_pfdealer').injectInside(pfd_item);
	
					pfd_item.appendText(' | ');
	
					anch.clone().setHTML(glossary_label_clear).addEvent('click', function() {
						buildPFDEALER('clear');
					}).setProperty('name', '&lpos=dealer_menu&lid=clear_pfdealer').injectInside(pfd_item);
				}
				if(dealer_set == true){
					
					if($('dealer_no_tools')){
						$('dealer_no_tools').remove();
					}
					
					div.clone().setProperty('id','dealer_no_tools').setHTML(glossary_def_preferred_dealer_no_tools).setStyles({
						'padding':'4px',
						'fontSize': '9px'
					}).injectBefore('dealer_search_inventory');
				}
				
				$('dealer_get_a_quote').setStyle('display', 'none');
				$('dealer_current_incentives').setStyle('display', 'none');
				$('dealer_schedule_a_test_drive').setStyle('display', 'none');
				$('dealer_get_a_brochure').setStyle('display', 'none');
				$('dealer_search_inventory').setStyle('display', 'none');
			}
			
			pfd_item.injectInside(list);
			
		
		list.injectInside(menu);
}

function buildPFDEALER(option) {
	
	var msg_change = glossary_label_sure_want_change + " " + glossary_label_change + " " + glossary_label_preferred_dealer + "?";
	var msg_clear = glossary_label_sure_want_change + " " + glossary_label_clear + " " + glossary_label_preferred_dealer + "?";
	var message = (option == 'change') ? msg_change : msg_clear;
	
	var wrapper = $('wrapper');
	var content = $('main_content');
	
	var div = new Element('div', {
			'id': 'adjust_dealer',
			'class': 'adjust_dealer'
	});
	
	var para = new Element('div');
	var span = new Element('span');
	var anch = new Element('a').setProperty('href', '#');
	
	para.setHTML(message).injectInside(div);
	anch.clone().addEvent('click', function() { eventPFDEALER(option); }).setHTML(glossary_label_yes_please).injectInside(span);
	anch.clone().addEvent('click', function() { eventPFDEALER(); }).setHTML(glossary_label_no_thanks).injectInside(span);
	span.injectInside(div);
	
	div.injectInside(wrapper);
	div.setStyle('top','300px');
	
}

function eventPFDEALER(option) {
	if (option) {
		
		dealerInfo.clearPreferredDealerCookie();
		    
		if((hrefLocation.search("hostc") != -1) || (hrefLocation.search("hostd") != -1)){
	        /**
            * Delete the user's preferred dealer cookie
            */
            ASC.Chrysler.removePreferredDealer();
        }
		
		if (option == 'clear') {
			dealerInfo.id = null;
			populate_dealerInfo();
		} else {
			window.location = "http://" + location.host + "/bridge/index.html?zipcode=" + userData.zipcode + "&app=cdl&family=&model=&year=";
		}		
	}
	
	if($('adjust_dealer')){
	    $('adjust_dealer').remove();
	}
	
	// change user segmentation group
	setUserSegment();
}

function initializeInventoryMenus(respXML) {
	
	// MANUALLY SET ARRAY OF ALL FORM ELEMENTS
	var forms = [ $('form_preferred_dealer_inventory'),
				  $('form_shop_inventory'),
				  $('form_model_inventory') ];
				  
			
		/** BEGIN IMPORTANT **/
		// the client changed their minds and they want AZ and VA 
		// dealers functionality to be disabled as it was before
		// with the exception of 'search inventory', they want that
		// functionality in there for VA and AZ dealers
		if (dealerInfo.dealerSitePointer != "3") {			
			forms.each( function(el) {
					
				// escape if el doesn't exist
				if (!el) return false;
				
				// add special classname so form
				// functionality still will exist
				el.addClass('AZ_VA_dealer');
			});
		}				
		/** END IMPORTANT **/
				  
		
		// if pfdealer DOESN'T have webtools (gaqURL) or in states AZ/VA update pfdealer DIVs with message
		if ( dealerInfo.dealerSitePointer != 3) {
			forms.push( $('form_preferred_dealer_quote'),
						$('form_preferred_dealer_testdrive'),
						$('form_shop_quote'),
						$('form_shop_testdrive'),
						$('form_model_get_quote'),
						$('form_buzz_get_quote') );
			
			// change dealerInfo.gaqURL to null
			// this way dealer menus will populate
			// with message
			dealerInfo.gaqURL = null;
		}
		
				  
		forms.each( function(el) {
			
			// escape if el doesn't exist
			if (!el) return false;
			
			// add autoclear class to <form>
			el.addClass('autoclear');

			// add onchange event handler
			// to each select field
			if (el.getElement('select')) {
				var select = el.getElement('select');
				var f0rm = select.getParent();
				var div = f0rm.getParent();
				var list = new Element('ul').addClass('pfdealer_wrapper');

				// if pfdealer list (holding bad pfdealer msg or inv amount)
				// does NOT exist, create one
				if (!div.getElement('ul.pfdealer_wrapper')) {
					list.injectInside(div);					
				} else {
					var pfdealer_list = div.getElement('ul.pfdealer_wrapper');
					if (pfdealer_list.hasChildNodes() == true) pfdealer_list.empty();
				}
				
				// hide form from non-fivestar and non-webtools dealers
				if (dealerInfo.dealerSitePointer != 3) {				
					var glossary = pfdealerMessage(el.id);
					var pfdealer_list = div.getElement('ul.pfdealer_wrapper');
					
						pfdealer_list.setHTML('<li>' + glossary + '</li>'); // build bad dealer message
						el.setStyle('display', 'none'); // hide form
				}
				
				else { 
					el.setStyle('display', 'block');
				}
				
				
				// MODELS & COLORS PAGE OR NOT FIVESTAR OR WEBTOOLS PFDEALER
				if (el.id == 'form_model_inventory') {					
					var car = cur_year + ' ' + cur_vehicle_display;
					
					if (!div.getElement('h2')) {
						new Element('h2').setHTML('FOR ' + car.toUpperCase()).injectAfter(f0rm);
					}
					
					// hide form input field
					f0rm.getFirst().setStyles({
						'position': 'absolute',
						'left': '-9999px',
						'top': '-9999px',
						'visibility': 'hidden'
					});
					
					div.setStyle('height', 'auto');
					
					// TEMP FIX until template allows for models & color page to grow
					// we're not allowing hotdeals <li> to be added to this div
					//commenting this, as we are now displaying hot deals on models page
					//div.getElement('ul.pfdealer_wrapper').addClass('one-child'); 
				}
				
				// attach onchange event handler
				//select.addEvent('change', function() {
				select.onchange = function() {
					// validate the form value
					if (this.value == '') return false;
						
					// get value from select split to get
					// trilogy value from vehicle_data object
					var year = this.value.substring(0,4);
					var car = this.value.substring(4);
						
					// query Trilogy for inventory from users set preferred dealer
					var inventory_url = "/hostd/getsearchinventorysummary.xml?"
									  + "dealerCode=" + dealerInfo.id
									  + "&modelYearCode=" + vehicle_data[year][car].apps.model_code;
						
					// query inventory of selected vehicle
					new Ajax(inventory_url, {
							method: 'get',
							onComplete: function(text, xml) {
								updateInventoryMenus(xml, [el], vehicle_data[year][car].apps.model_code, year+car); // update inventory menus
							}
					}).request();
					
				//});
				}
			}
			
			// remove zipcode input field and button if they exist
			if(el.id != 'form_shop_inventory') {
				if ( el.getElement('input') ) el.getElement('input').setStyle('display', 'none');
				if ( el.getElement('a.form_button') ) el.getElement('a.form_button').remove();
			}
			
		});
		
		// user is on vehicle page which inventory for is contained in this xml file
		// send it to updateInventoryMenus function and update ALL form menus to reflect inventory
		if (respXML) updateInventoryMenus(respXML, forms, vehicle_data[cur_year][cur_vehicle].apps.model_code, cur_year+cur_vehicle);
}



function getElemSize(el) {
	return el.getSize().size.y;
}



function pfdealerMessage(id) {
	var term = glossary_label_preferred_dealer_no_support + ' ';		
		if (id.indexOf('inventory') != -1) term += glossary_label_for_inventory_information;
		if (id.indexOf('quote') != -1) term += glossary_label_to_get_quote;
		if (id.indexOf('testdrive') != -1) term += glossary_label_to_schedule_testdrive;
		
	return term;	
}

function updateInventoryMenus(obj, forms, cur_car, cur_organic_vehicle) {

	// make sure dealer has vehicle in stock
	// CURRENTLY, it seems count attribute
	// returns 0 
	
	var dealer = obj.getElementsByTagName('dealer')[0];
	var data = obj.getElementsByTagName('data')[0];
	var count = data.getAttribute('inventoryCount');
		
	if (count > 0) {
		var cars = dealer.getElementsByTagName('vehicle');
	} else {
		var dealer = "";
		var count = 0;
		var cars = 0;
	}
	
	// set dealerInfo objects
	dealerInfo.inventoryOBJ = dealer;
	dealerInfo.hotdealsOBJ = [];
		
	// if there is a hotdeal put it into an array
	for (i=0; i < cars.length; i++) {
		var car = cars[i];
		if ( car.getAttribute('dealerDiscount') ) dealerInfo.hotdealsOBJ.push(car);
	}
	
	forms.each( function(el) {
		
		// escape if el doesn't exist
		if (!el) return false;
		var parent = el.getParent();
		var wrapper = parent.getParent().getParent();
		var list = parent.getElement('ul.pfdealer_wrapper');
		var item = new Element('li');
		var span = new Element('span');
		
		var anch = new Element('a', {
			'class': 'form_button',
			'name': '&lpos=global_top_nav&lid=' + el.id + '_submit_button;'
		});
		
		var image = new Element('img').setProperty('src', '/shared/images/go_button.gif').injectInside(anch);
		
			// if previous items in list exist from a previous result, clear them!!
			if ( parent.getElement('ul.pfdealer_wrapper').hasChildNodes() == true ) parent.getElement('ul.pfdealer_wrapper').empty();
			
			
			// allow form to expand when menus grow
			if (forms.length == 1) {
				wrapper.setStyle('height', 'auto');
				
			}
			
		
			// some var values below are in glossary.js
			if ( (dealerInfo.dealerSitePointer != "3" && el.hasClass('AZ_VA_dealer') == true) || dealerInfo.dealerSitePointer == "3" ) {
				
				// toggle on display for forms
				el.setStyle('display', 'block');
				
				// trilogy url user will be transfered to
				var inventory_url = "/hostd/getsearchinventorysummary.xml?"
								  + "dealerCode=" + dealerInfo.id
								  + "&modelYearCode=" + cur_car;
								  
				var hot_deals_url = "/hostd/getsearchinventorysummary.xml?showBy=deals"
								  + "&dealerCode=" + dealerInfo.id
								  + "&modelYearCode=" + cur_car;
				
				// ONLY display <li>'s IF the count is greater than or equal to 1
				if (count >= 1) {
					var inv_item = item.clone().addClass('inventory_wrapper');
					
					if(list.getParent().hasClass('button_list_wrapper_closed')) {
						//models page clone
						anch.clone().set({
								'events': {
									'click': function() {
										if(el.id == 'form_model_inventory') {
											submitPreferredInventory(el);
										} else {
											esConfirm("wrap('newinventory','dealerid="+dealerInfo.id+"','"+cur_organic_vehicle+"','');");
										}
										//force new tracking when preferred dealer inventory button is clicked
										_hbSet('lid', 'model_dealer_inventory_submit_button');
										_hbSet('lpos', 'content');
										_hbSend();
									}
								},
								'href': '#',
								'name': '&lpos=content&lid=form_model_dealer_inventory_submit_button;'
						}).injectInside(inv_item);
					} else {
						//global nav clone
						anch.clone().set({
								'events': {
									'click': function() {
										submitPreferredInventory(el);
									}
								},
								'href': '#'
						}).injectInside(inv_item);
					}
					
					span.clone().setHTML(count + ' ' + glossary_label_similar_vehicles_avail_at + ' ' + dealerInfo.name).injectInside(inv_item);
					
					if(el.id == 'form_preferred_dealer_inventory' || el.id == 'form_model_inventory') {
						inv_item.injectInside(list);
					}

				} else {
					if(el.id == 'form_preferred_dealer_inventory') {
						var inv_item = item.clone();
						inv_item.addClass('inventory_wrapper').setHTML(glossary_label_please_visit_dealership);
						
						new Element('a').setProperty('href', '#').addEvent('click', function() {
								submitInventory2(userData.zipcode, el.getFirst().value);
						}).setHTML(glossary_label_search_other_inventory).injectInside(inv_item);
						inv_item.injectInside(list);
					}
						parent.addClass('no_hide'); // TEMP FIX... apparently we want to have a link to trilogy app if no vehicles are in inv without saying "0"
				}
				
				if (dealerInfo.hotdealsOBJ.length >= 1 && list.hasClass('one-child') == false) {
					var hot_item = item.clone().addClass('hotdeals_wrapper');
						anch.clone().set({
								'events': {
									'click': function() {
										esConfirm("wrap('newinventory','dealerid="+dealerInfo.id+"','"+cur_organic_vehicle+"','');");
									}
								},
								'href': '#'
						}).injectInside(hot_item);
						span.clone().setHTML(dealerInfo.hotdealsOBJ.length + ' ' + glossary_label_hot_deals_available_today).injectInside(hot_item);
						hot_item.injectInside(list);
				}
					
					// check number of items in list
					// if more than one add margin-bottom
					// and border-bottom to first-child
					if (list.childNodes.length > 1) {
						list.getFirst().setStyles({
							'margin-bottom': '10px',
							'padding-bottom': '10px',
							'border-bottom': '1px solid #999'
						});
					}
					
				
				// if the count is 0 for both AND an <h2> exists (models & color page)
				// ERASE the <h2> and DO NOT parse the <li>'s
				// assign trilogy app link to "Search Inventory" button
				if (count < 1 && dealerInfo.hotdealsOBJ.length < 1 && parent.getElement('h2') && parent.hasClass('no_hide') == false ) {
					parent.setStyles({
						'position': 'absolute',
						'visibility': 'hidden'
					});
					
					parent.getPrevious().getFirst().addEvent('click', function() {
						submitInventory2(userData.zipcode, el.getFirst().value);
					});
				}
				
				// add style 'display: block' to parent
				else {
					parent.setStyle('display', 'block');
				}
				
			} else {
				// preferred dealer is NOT fivestar or has not purchased webtools
				// display message to user
				var glossary = pfdealerMessage(el.id);
				el.setStyle('display', 'none');
				item.clone().setHTML(glossary).injectInside(list);
			}
			
			
		// calculate height & set parent height
		if (!parent.getAttribute('name')) {
			if (el.getSize().size.y > 0) {
				
				// ie sucks and you have to add extra height
				// to compensate for padding
				var extra = (window.ie) ? 20 : 14;
				
				parent.setAttribute('name', (el.getFirst().getSize().size.y + extra) );
				parent.setStyle('height', parent.getAttribute('name').toInt() + list.getSize().size.y);
			}
		} else {
			parent.setStyle('height', parent.getAttribute('name').toInt() + list.getSize().size.y);
		}
			
	});
	
}




function submitInventory2(zip, car) {
	if (zip && car) {
		wrap('newinventory', 'zipcode='+zip, car);		
	}
}



function submitPreferredQuote(form){
	if(form.vehicle.value != "") {
		var val = form.getFirst().value;
		var call = "wrap('gaq', 'zipcode=" + dealerInfo.zip5 + "', '" + val + "')";
			eval(call);
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}



function submitPreferredTestDrive(form){
	if(form.vehicle.value != ""){
		var val = form.getFirst().value;
		var call = "wrap('testdrive', 'zipcode=" + dealerInfo.zip5 + "', '" + val + "')";
			eval(call);
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}



var vehicle_count;
function get_vehicle_count(val) {
	if(typeof(val) != "undefined") {
		obj = eval(val);
		vehicle_count = obj[2][0][1].count;

		var msi = $('model_search_inventory');
		if(msi && typeof(vehicle_count) != "undefined"){
	 		msi.removeClass('button_list_menu');
	 		msi.addClass('search_inventory_box');
			if (language == "es"){
				msi.setHTML('<span>'+glossary_label_dealer_inventory+'</span>'+'<strong>'+vehicle_count+'</strong> '+glossary_label_similar_matches_available+' '+glossary_label_at+' <a href="javascript:linkTrack(\'model_preferred_inventory\', \'dealer_website_' + dealerInfo.id + '\');flexWinEnglish(\''+dealerInfo.domainName+'\',\'yes\',\'\',\'\',\'dealer_website\',\'all\');" >'+dealerInfo.name+'</a><a href="javascript:linkTrack(\'model_preferred_inventory\', \'vehicle_inventory\');wrap(\'newinventory\', \'dealerid='+dealerInfo.id+'\',\''+cur_year+cur_vehicle+'\');" class="button_list_menu_button_link">'+glossary_label_view_all_matches+'</a>');
			}else{
	 			msi.setHTML('<span>'+glossary_label_dealer_inventory+'</span>'+'<strong>'+vehicle_count+'</strong> '+glossary_label_similar_matches_available+' '+glossary_label_at+'<br/><strong>{</strong> <a href="javascript:linkTrack(\'model_preferred_inventory\', \'dealer_website_' + dealerInfo.id + '\');flexWin(\''+dealerInfo.domainName+'\',\'yes\',\'\',\'\',\'dealer_website\',\'all\');" >'+dealerInfo.name+'</a> <strong>}</strong><a href="javascript:linkTrack(\'model_preferred_inventory\', \'vehicle_inventory\');wrap(\'newinventory\', \'dealerid='+dealerInfo.id+'\',\''+cur_year+cur_vehicle+'\');" class="button_list_menu_button_link">'+glossary_label_view_all_matches+'</a>');
			}
		}
	}
}

function createOptGroup(cssClass, label) {
	if(cssClass == null || cssClass == "undefined") cssClass = "";
		
	var newOptGroup = new Element('optgroup').setProperties( { 'class': cssClass, 'label': label });
	return newOptGroup;
}

function createOption(value, displayText, selected) {
	if(selected == null || selected == "undefined" || selected == "") selected = false;
		
	var newOpt = new Element('option', {value: value});
	newOpt.setHTML(displayText);
	newOpt.setProperty('selected', selected);
	return newOpt;
}

function cloneObject(obj) {
	var clone = obj.clone().cloneEvents(obj); //clone with events (if any)
	
	for(var x=0; x<clone.childNodes.length; x++) {
		//Copy 'selected' attributes to the clone if they exist, as they are not carrying over automatically
		if(obj.childNodes[x].getProperty('selected')) {
			clone.childNodes[x].setProperty('selected', obj.childNodes[x].getProperty('selected'));
		}
	}
		
	return clone;
}
	
function appendGroup(group, form) {
	group = cloneObject(group);
	group.injectInside(form.vehicle);
}

function populate_forms(){
	if(typeof(cur_vehicle) == 'undefined'){cur_vehicle = "";}
	if(typeof(cur_year) == 'undefined'){cur_year = "";}
	
	/* Compare vehicles */
	var order_array = shop_compare_order_nonvehicle;
	if(cur_vehicle != "" && cur_year != ""){
		if(vehicle_data[cur_year][cur_vehicle].flags.compare == true){
			order_array = shop_compare_order_vehicle;
		}
	}
	var options_count = 0;
	var comparison_links = "";
	for(var i = 0; i < order_array.length; i++){
		comparison_links += shop_compare_data[order_array[i]];
	}
	//$('no_form_shop_compare').setHTML(comparison_links);
	//populate the models page compare box
	if($('form_model_compare')){
		options_count = 0;
		for(var i = 0; i < order_array.length; i++){
			var model_compare_data = new Array();
			model_compare_data[0] = new Option(cllc.constants.get('BRAND') +" "+glossary_label_vs_competition, "edmunds");
			model_compare_data[1] = new Option(glossary_label_compare + " " + cllc.constants.get('BRAND') + " " + glossary_label_vehicles, "vehicleselector");
			model_compare_data[2] = new Option(glossary_label_compare + " "+ decode_html_entities(vehicle_data[cur_year][cur_vehicle].display) +" " + glossary_label_models, "vehiclespecs");
			$('form_model_compare').type.options[options_count] = model_compare_data[order_array[i]];
			options_count++;
		}
	}
	
	/* All Vehicle based menus */
	//initialize all "Select a Vehilce" options for menus that need this
	$('form_shop_brochure').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	
	// create the div to hold the PDF sizes in the form
	var pdfSize = new Element('span').injectInside($('form_shop_brochure')).setProperty('class', 'pdfText');
	var pdfSizeDealer = new Element('span').injectInside($('form_preferred_dealer_brochure')).setProperty('class', 'pdfText');	
		
	//$('form_shop_inventory').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	
	$('form_preferred_dealer_inventory').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	$('form_preferred_dealer_brochure').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	$('form_preferred_dealer_quote').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	$('form_preferred_dealer_testdrive').vehicle.options[0] = new Option(glossary_label_select_a_vehicle , "");
	//retain count of options for each menu
	var shop_build_count = 1;
	var shop_towing_count = 1;
	var brochure_count = 1;
	//var shop_inventory_count = 1;
	var shop_quote_count = 1;
	var shop_testdrive_count = 1;
	//var shop_estimate_payments_count = 1;
	var shop_apply_for_credit_count = 1;
	
	$('form_shop_brochure').vehicle.onchange = function(){updateBrochureOptions('form_shop_brochure');};
	$('form_preferred_dealer_brochure').vehicle.onchange = function(){updateBrochureOptions('form_preferred_dealer_brochure');};
	$('form_preferred_dealer_brochure').brochure_type.onchange = function(){showPDFSize('form_preferred_dealer_brochure');};
	$('form_preferred_dealer_brochure').getFirst().getNext().setStyle('visibility', 'hidden');
	$('form_shop_brochure').brochure_type.onchange = function(){showPDFSize('form_shop_brochure');};
	$('form_shop_brochure').getFirst().getNext().setStyle('visibility', 'hidden');
	/*TODO utilize this instead of moo onchange event $('form_preferred_dealer_inventory').vehicle.onchange = function(){alert("hi");};*/
	
	//------------------------------------------NEW GLOBAL NAV LISTS------------------------------------------
	var groupYear;
	var groupName;
	var groupVeh;
	var brochure_group;
	var build_group;
	//var inventory_group;
	var quote_group;
	var testdrive_group;
	//var estimate_payments_group;
	var apply_for_credit_group;
	
	// Loops through grouped_vehicle_list_order and creates option groups.
	for(n in grouped_vehicle_list_order) {
		groupYear = grouped_vehicle_list_order[n].year;
		groupName = groupYear + " " + grouped_vehicle_list_order[n].group_label; //2009 Vehicles, 2008 Vehicles, 2007 Vehicles
		groupVeh = grouped_vehicle_list_order[n].vehicles; //vehicles object
		
		//add optgroup (one for each flag in vehicle_data array.
		build_group = createOptGroup('vehGroup', groupName);
		brochure_group = createOptGroup('vehGroup', groupName);
		//inventory_group = createOptGroup('vehGroup', groupName);
		quote_group = createOptGroup('vehGroup', groupName);
		testdrive_group = createOptGroup('vehGroup', groupName);
		//estimate_payments_group = createOptGroup('vehGroup', groupName);
		apply_for_credit_group = createOptGroup('vehGroup', groupName);
		
		// Loops through each Year/Vehicle and injects vehicles into option groups. Checks flag in vehicle_data array to determine if vehicle belongs in menu.
		for(o in groupVeh) {
			i = groupYear;
			j = groupVeh[o].veh;
			
			//select current vehicle in list (if on a vehicle page)
			if(cur_vehicle == j && cur_year == i){set_selected = 'selected';}else{set_selected = false;}

			if(vehicle_data[i][j].flags.build){
				//append options to optgroup	
				createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(build_group);
			}
			if(vehicle_data[i][j].flags.brochure){
				//append options to optgroup
				createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(brochure_group);
			}
			if(vehicle_data[i][j].flags.inventory){
				//append options to optgroup
				//createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(inventory_group);
			}
			if(vehicle_data[i][j].flags.get_a_quote){
				//append options to optgroup
				createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(quote_group);
			}
			if(vehicle_data[i][j].flags.testdrive){
				//append options to optgroup
				createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(testdrive_group);
			}
			if(vehicle_data[i][j].flags.financing){
				//append options to optgroup
				//createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(estimate_payments_group);
				createOption(i+j, vehicle_data[i][j].display_form, set_selected).injectInside(apply_for_credit_group);
			}
		}
		
		if(brochure_group.hasChildNodes()) {
			//add optgroup to form menu
			appendGroup(brochure_group, $('form_shop_brochure'));
			appendGroup(brochure_group, $('form_preferred_dealer_brochure'));
			updateBrochureOptions('form_shop_brochure');
			updateBrochureOptions('form_preferred_dealer_brochure');
		}
		//if(inventory_group.hasChildNodes()) {
			//add optgroup to form menu
			//appendGroup(inventory_group, $('form_shop_inventory'));
			//appendGroup(inventory_group, $('form_preferred_dealer_inventory'));
			
			//if($('form_model_inventory')){
				//appendGroup(inventory_group, $('form_model_inventory'));
			//}
		//}
		if(quote_group.hasChildNodes()) {
			//add optgroups to form menu
			appendGroup(quote_group, $('form_preferred_dealer_quote'));
			
			if($('form_model_get_quote')){
				appendGroup(quote_group, $('form_model_get_quote'));
			}
			if($('form_buzz_get_quote')){
				$('form_buzz_get_quote').setStyle("margin", 0);
				$('form_buzz_get_quote').setStyle("padding", 0);
				$('form_buzz_get_quote').setStyle("height", 0);
				
				appendGroup(quote_group, $('form_buzz_get_quote'));
			}
			if($('form_mom_get_quote')){
				appendGroup(quote_group, $('form_mom_get_quote'));
			}
		}
		if(testdrive_group.hasChildNodes()) {
			//add optgroup to form menu
			appendGroup(testdrive_group, $('form_preferred_dealer_testdrive'));
		}
		
		/*		
		if(estimate_payments_group.hasChildNodes()) {
			//add optgroup to form menu
			appendGroup(estimate_payments_group, $('form_shop_estimate_payments'));
		}
    */
		/*
		if(apply_for_credit_group.hasChildNodes()) {
			//add optgroup to form menu
			appendGroup(apply_for_credit_group, $('form_shop_apply_for_credit'));
		}
		*/
	}

	//----------------------------------------END NEW GLOBAL NAV LISTS----------------------------------------
	
}

function esConfirm(func, newWin) {
	if (language == 'es') {
		if (confirm(glossary_def_dg_application_confirm_statement)) {
			(newWin) ? window.open(func,'','') : eval(func);
		}
	} else {
		(newWin) ? window.open(func,'','') : eval(func);
	}
}

function showPDFSize(form) {
	
	var brochure_vehicle = $(form).vehicle.value;
	if(brochure_vehicle != ""){
		
		if($(form).brochure_type.value == "download"){
			// $$('#' + form + ' span.pdfText')[0].setText(glossary_label_download + ' ' + vehiclePDFSizes[brochure_vehicle]);
			jQuery('#' + form + ' span.pdfText').eq(0).html('<a href="javascript:submitBrochure(document.form_shop_brochure);" name="&lpos=global_top_nav&lid=shop_brochure_form_submit_button;">' + glossary_label_download + ' ' + vehiclePDFSizes[brochure_vehicle] + '</a>');
		} else {
			$$('#' + form + ' span.pdfText')[0].setText('');
		}
	}
}

function updateBrochureOptions(form){
	var brochure_options_count = 0;
	var brouchure_vehicle = $(form).vehicle.value;
	
	//clear all existing Options
	for(var j = 1; j < $(form).brochure_type.length; j++){
		$(form).brochure_type[j] = null;
	} 
	if(brouchure_vehicle != ""){
		var i = brouchure_vehicle.substring(0,4);
		var j = brouchure_vehicle.substring(4);
		if(vehicle_data[i][j].flags.brochure_opt.mail){
				$(form).brochure_type.options[brochure_options_count] = new Option(glossary_label_brochure_mail_it_to_me, 'mail');
				brochure_options_count++;
		}	
		if(vehicle_data[i][j].flags.brochure_opt.download){
				$(form).brochure_type.options[brochure_options_count] = new Option(glossary_label_brochure_download_view_it, 'download');
				brochure_options_count++;
		}
		if(vehicle_data[i][j].flags.brochure_opt.view){
				$(form).brochure_type.options[brochure_options_count] = new Option(glossary_label_brochure_view_print_it, 'view');
				brochure_options_count++;
		}
		// $(form).getFirst().getNext().setStyle('visibility', 'visible');
		
	}else{
		//set the first option to ""
		// $(form).getFirst().getNext().setStyle('visibility', 'hidden');
		$(form).getFirst().getNext().setStyle('display', 'none');
		$$('#' + form + ' span.pdfText')[0].setText('');
	}
	showPDFSize(form);
}

function submitCompare(form){
	if(form.type.value == "vehiclespecs"){
		wrap(form.type.value, '', cur_year+cur_vehicle, "Standard");
	}else{
		wrap(form.type.value, '', cur_year+cur_vehicle);
	}
}
function submitNoFormCompare(app){
	if(app == "vehiclespecs"){
		wrap(app, '', cur_year+cur_vehicle, "Standard");
	}else{
		wrap(app, '',  cur_year+cur_vehicle);
	}
}
function submitBuild(form){
	if(form.vehicle.value != ""){
		if(populate_zip && populate_zip != "false" && populate_zip != "undefined"){
			wrap('priceequip', 'zipcode='+populate_zip, form.vehicle.value);
		}else{
			wrap('priceequip', '', form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}
function submitShopTowing(form){
	if(form.vehicle.value != ""){
		wrap('towing', '', form.vehicle.value);
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitBrochure(form){
	var onRamTrucks = (location.host.indexOf('ramtrucks.com') >= 0 || location.pathname.indexOf('default/main/US/RamTruck') >= 0) ? true : false;
	var windowPrefixString = (onRamTrucks) ? "http://www.dodge.com" : "";
	if(form.vehicle.value != ""){
		var val = form.vehicle.value.substring(4);
		var yr = form.vehicle.value.substring(0,4);
		if(form.brochure_type.value == "view"){		
		window.location = windowPrefixString+"/vehicle_brochure/ebrochure.html?family="+val+"&year="+yr;
		}else if(form.brochure_type.value == "download"){
			_hbSet("vcon", language + "/" + yr + "/" + val + "/brochure/PDF;" + language + "/" + yr + "/" + val + "/brochure/PDF");
			_hbSet("n", yr+"_"+val+".pdf");
			_hbSend();
  		window.open(windowPrefixString + "/"+language+"/pdf/"+yr+"_"+val+".pdf");
		}else if(form.brochure_type.value == "mail"){
			if (language == "es"){
				window.location = "/es/vehicle_brochure/form.html?family="+val+"&year="+yr;
			}else{
	 			window.location = windowPrefixString+"/vehicle_brochure/form.html?family="+val+"&year="+yr;
			}
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitInventory(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
		  espiff("newinventory", form.vehicle.value);
		  wrap('newinventory', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitPreferredInventory(form){
    if(dealerInfo.dealerSitePointer != "3"){
        alert(glossary_label_non_five_star_message);
    }else{
	    if(form.vehicle.value != ""){
			wrap('ext_sni', dealerInfo.domainName, '', '');
	        }else{
		    alert(glossary_label_valid_vehicle_error);
	    }
	}
}

function submitInventoryUnknown(veh){
	var str = 'zipcode=';
	if(populate_zip){
		str += populate_zip;
	}
	wrap('newinventory', str, veh);
}

function submitQuote(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			espiff("gaq", form.vehicle.value);
			wrap('gaq', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitEstimate(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			wrap('cf_pmt_est', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitApply(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			wrap('cf_app_cred', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}


function submitIncentives(form,arg_cur_vehicle){
	if(arg_cur_vehicle == ""|| arg_cur_vehicle == undefined){arg_cur_vehicle = "";}
	if(validateZip(form, true)){
			wrap('daa', 'zipcode='+form.zipcode.value, arg_cur_vehicle);
	}else{
		if(confirm( glossary_def_incentives_alert )){
			form.zipcode.value = "";
		} else {
			form.zipcode.value = "";
		}
	}
}

function submitIncentivesFlash(zip,arg_cur_vehicle){
	if(arg_cur_vehicle == ""|| arg_cur_vehicle == undefined){arg_cur_vehicle = "";}
	if(validateZipFlash(zip, true)){
			wrap('daa', 'zipcode='+zip, arg_cur_vehicle);
	}else{
		confirm( glossary_def_incentives_alert )
	}
}

function submitPreferredIncentives(){
	wrap('daa', 'zipcode='+dealerInfo.zip5+'&dealerid='+dealerInfo.id, '');
}
function submitTestDrive(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			espiff("satd", form.vehicle.value);
			wrap('testdrive', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitEstimate(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			wrap('cf_pmt_est', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}

function submitApply(form){
	if(form.vehicle.value != ""){
		if(validateZip(form)){
			wrap('cf_app_cred', 'zipcode='+form.zipcode.value, form.vehicle.value);
		}
	}else{
		alert(glossary_label_valid_vehicle_error);
	}
}


function submitDealer(form){
	if(validateZip(form)){
		
		userData.zipcode = form.zipcode.value;
	    
	    if((hrefLocation.search("hostc") != -1) || (hrefLocation.search("hostd") != -1)){
	        /**
             * Store the user's zip code to a cookie (session cookie)
             * @param {String} zipCode U.S. five digit Postal Code 
             */
            ASC.Chrysler.setZipCode(form.zipcode.value);
        }
	    
		//Bake the userData cookie
		Cookie.set('userdata', Json.toString(userData), {duration: 365, path: "/"});
		
		wrap('cdl', 'zipcode='+form.zipcode.value, '');
	}
}

function validateZip( argF, argAlert ) {
	var z = argF.zipcode;
	var re = new RegExp('^[0-9]{5}$');
	
	if( z = z.value )
		if( z.length == 5 )
			if( z.match( re ))
				return true;
	if(typeof(argAlert) == "undefined")	alert( glossary_label_zip_code_error );
	return false;
}

function validateZipFlash( zip, argAlert ) {
	var re = new RegExp('^[0-9]{5}$');
		if( zip.length == 5 )
			if( zip.match( re ))
				return true;
	if(typeof(argAlert) == "undefined")	alert( glossary_label_zip_code_error );
	return false;
}

function submitSearch(argForm){ 
  submit = askWin(argForm); 
  if(submit == true){ 
    argForm.submit(); 
  } 
}

var SearchFormDefault = "Search "+cllc.constants.get('BRAND')+".com";

function findSearchFormDefault()
{
    SearchFormDefault = document.askform.ask.value;
}

function askWin(f) {
    if( f ) {
        f.target = "_self";
        if( f.ask.value == SearchFormDefault)
		{
			f.ask.value = ""; 
		} 
        if( f.ask.value.replace(/^\s+|\s+$/g,'') == "" ) {
            alert(glossary_def_keyword_begin_search);
            document.askform.ask.value = SearchFormDefault;
            return false;
        } else {
            linkTrack("global_header", "Search "+cllc.constants.get('BRAND')+".com");
            return true;
        }
    }
}

function asShownIncentives(){
	if(dealerInfo.id != null){
		wrap('daa', 'model_year='+cur_year+'&zipcode='+dealerInfo.zip5+'&dealerid='+dealerInfo.id, cur_vehicle);
	}else if(populate_zip && populate_zip != "false" && populate_zip != "undefined"){
		wrap('daa', 'model_year='+cur_year+'&zipcode='+populate_zip, cur_vehicle);
	}else{
		wrap('daa', 'model_year='+cur_year+'', cur_vehicle);
	}
}

function showGAQForm(theForm) {
	if(theForm) {
		theForm.style.display = "block";
	}
}

onload_register('findSearchFormDefault()');

if(hrefLocation.search("/business/") == -1 && hrefLocation.search("/commercial/") == -1){
    onload_register('dealerInfo.init();');
    onload_register('populate_dealerInfo()');
    onload_register('populate_forms()');
}

//inBound methods for external vendors
var inBound = {

    setPreferredDealer:function(dealerCode){
        // Set PD Cookie
        dealerInfo.dealerID = dealerCode;
        dealerInfo.setPreferredDealerCookie();
    
        //Set Dealer Info Cookie and Load Obj
        dealerInfo.getDealerXML(dealerInfo.dealerID,true);
        dealerInfo.INFO?(alert("Set Preferred Dealer:\n\n " + this.toString())):null;
    },

    removePreferredDealer:function(){
        dealerInfo.clearPreferredDealerCookie();
        dealerInfo.id = null;
        populate_dealerInfo();
        //change user segmentation group
        setUserSegment();
    },
   
    getPreferredDealer:function(){
         return dealerInfo.dealerID;
    },
    
    setZipCode:function(zipCode){
        userData.zipcode = zipCode;
        //Bake the userData cookie
        Cookie.set('userdata', Json.toString(userData), {duration: 365, path: "/"});
        populate_dealerInfo();
        $('dealer_finder').setStyle("display", "none");
        document.form_preferred_dealer_find.zipcode.value = zipCode;
    },
    
    removeZipCode:function(){
        userData.zipcode = null;
        var clearCookie = Cookie.set('userdata', Json.toString(userData), {duration: 365, path: "/"});
        //Bake the userData cookie
        $('dealer_menu').setStyle("display", "none");
        $('dealer_finder').setStyle("display", "block");
        document.form_dealer_find.zipcode.value = "ZIP";
        this.removePreferredDealer();
    }

};

