// DEALER LOCATOR JAVASCRIPT
	
	var map;
	var MarkerArray;
	var PageContentArray;
	var MarkerContentArray;
	var start_X;
	var start_Y;
	var global_error = false;
	var http_request = false;
	var CURRENT_PAGE = 1;
	var MAX_PAGE_RECORDS = 5;
	var PAGE_TOTAL = 0;
	var START_INDEX = 0;
	var END_INDEX = 0;
	var DL_REQUEST_PAGE = "/DealerLocatorRequest/DealerLocatorRequest.aspx";
	
	//====================================================================

	function Marker(x,y,label,dname,daddress,dcity,dstate,dzip,dphone) {
		this.X = x;
		this.Y = y;
		this.Label = label;
		this.DName = dname;
		this.DAddress = daddress;
		this.DCity = dcity;
		this.DState = dstate;
		this.DZip = dzip;
		this.DPhone = dphone;
	} 

	//====================================================================

	function makeRequest(url) 
	{
    	http_request = false;

    	if (window.XMLHttpRequest) { // used by Mozilla/Safari browsers
        	http_request = new XMLHttpRequest();
        	if (http_request.overrideMimeType) {
           		http_request.overrideMimeType('text/xml');
        	}
    	} else if (window.ActiveXObject) { // Internet Explorer
        	try {
            	http_request = new ActiveXObject("Msxml2.XMLHTTP");
        	} catch (e) {
           		try {
            		http_request = new ActiveXObject("Microsoft.XMLHTTP");
            	} catch (e) {}
        	}
    	}

    	if (!http_request) {
        	return false;
    	}
   
    	http_request.onreadystatechange = returnXML; 
    	http_request.open('GET', url, true); // true = return XML
    	http_request.send(null);
 	}

	//====================================================================
  
	function returnXML() 
	{
    	if (http_request.readyState == 4) {
        	if (http_request.status == 200) {
            	var xmldoc = http_request.responseXML;
				displayContents(xmldoc);
        	} else {
            //alert('There was a problem with the request.');
        	}
    	}
	}
 
	//==================================================================== 
 
	function displayContents(xmlDoc) 
	{
		try {
			var x = xmlDoc.documentElement.childNodes;
			MarkerArray = new Array();
			PageContentArray =  new Array();
			
			var write_out = "";
	
			start_X = x[0].getElementsByTagName("X")[0].childNodes[0].nodeValue
			start_Y = x[0].getElementsByTagName("Y")[0].childNodes[0].nodeValue
			
			for (var i=1;i<x.length;i++)
			{ 
				if (x[i].nodeType==1)
				{
					try {
						write_out = "<strong>Dealer # " + x[i].getElementsByTagName("MapNumber")[0].childNodes[0].nodeValue + "&nbsp;&nbsp;&nbsp; Miles: " + x[i].getElementsByTagName("Miles")[0].childNodes[0].nodeValue + "</strong><br />";
						write_out += (x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue +"<br />");
						//write_out += (x[i].getElementsByTagName("SpecialOrder")[0].childNodes[0].nodeValue == "True" ? "*" : "" ) +" ";		
						//write_out += (x[i].getElementsByTagName("ProCenter")[0].childNodes[0].nodeValue == "True" ? "R" : "" ) +"<br />";		
						write_out += (x[i].getElementsByTagName("Address")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Address")[0].childNodes[0].nodeValue +"<br />");
						write_out += (x[i].getElementsByTagName("City")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("City")[0].childNodes[0].nodeValue  +" ");
						write_out += (x[i].getElementsByTagName("State")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("State")[0].childNodes[0].nodeValue  +" ");				
						write_out += (x[i].getElementsByTagName("ZipCode")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("ZipCode")[0].childNodes[0].nodeValue ) +"<br />";
						write_out += (x[i].getElementsByTagName("Phone")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Phone")[0].childNodes[0].nodeValue +"<br />");
						//write_out += (x[i].getElementsByTagName("Website")[0].childNodes[0].nodeValue == "||" ? "" : "<a href=\"http://"+ x[i].getElementsByTagName("Website")[0].childNodes[0].nodeValue +"\" class=\"DLDealerWebsite\" target=\"_blank\">"+x[i].getElementsByTagName("Website")[0].childNodes[0].nodeValue+"</a><br />");
						//write_out += x[i].getElementsByTagName("PremiumPartner")[0].childNodes[0].nodeValue +"<br />";
						write_out += "<br />";	
						
						PageContentArray[i-1] = write_out;
						write_out = "";
					}
					catch(e){
						try {
							if(x[i].nodeName == "Error")
							{
								global_error = true;
								document.getElementById("Wait").style.display = "none";
								document.getElementById("map").style.display = "none";
								document.getElementById("PreviousDIV").style.display = "none";
								document.getElementById("NextDIV").style.display = "none";
								document.getElementById("ErrorMessages").style.display = "";
								var error_message = x[1].getElementsByTagName("Description")[0].childNodes[0].nodeValue;
								error_message = error_message.replace(/\[br\]/ig, "<br/>");
								document.getElementById("ErrorMessages").innerHTML = error_message;
							}
						}
						catch(e) {
							CallError();
						}
					}
					
					try {
						marker = new Marker(
							(x[i].getElementsByTagName("X")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("X")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("Y")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Y")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("MapNumber")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("MapNumber")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("Address")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Address")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("City")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("City")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("State")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("State")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("ZipCode")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("ZipCode")[0].childNodes[0].nodeValue),
							(x[i].getElementsByTagName("Phone")[0].childNodes[0].nodeValue == "||" ? "" : x[i].getElementsByTagName("Phone")[0].childNodes[0].nodeValue)
						);
						MarkerArray[i-1] = marker;
					}
					catch(e){
					}
				}
			}
			
 			PAGE_TOTAL = Math.ceil(PageContentArray.length/MAX_PAGE_RECORDS);
			
			if(PageContentArray.length <= MAX_PAGE_RECORDS) {
				END_INDEX = PageContentArray.length;
				
				document.getElementById("PreviousDIV").style.display = "none";
				document.getElementById("NextDIV").style.display = "none";
			} else {
				END_INDEX = MAX_PAGE_RECORDS;
				document.getElementById("NextDIV").style.display = "";
			}			
			
			//Write Dealer Listing
			WriteDealerList();
			
			if (GBrowserIsCompatible()) 
			{			
				if(!global_error){ document.getElementById("map").style.display = ""; }
	
				map = new GMap2(document.getElementById("map"));
				map.addControl(new GSmallMapControl());
				try {
					var MapCenter = new GLatLng(start_Y,start_X);
					map.setCenter(MapCenter, 7);
				}
				catch(err){
					var MapCenter = new GLatLng(38.0000,-97.0000);
					map.setCenter(MapCenter,1);
				}
				
				map.enableContinuousZoom();
			//=====================================================================================
				//Mouse Wheel
				GMap2.prototype.wheelZoom = function(event) {
					if(event.cancelable) event.preventDefault();
					if((event.detail || -event.wheelDelta) < 0) {map.zoomIn();} else {map.zoomOut();} return false; }
				GEvent.addDomListener(document.getElementById("map"), "DOMMouseScroll", map.wheelZoom);
				GEvent.addDomListener(document.getElementById("map"), "mousewheel", map.wheelZoom); 
			//=====================================================================================
				SetMapMarkers(); //Set Dealer Location Markers
				MapCenterIcon(); //Set Map Center "You are Here" Marker
			//=====================================================================================
			}
		}
		catch(e){
			try {
				document.getElementById("map").style.display = "none";
				document.getElementById("Wait").style.display = "none";
				document.getElementById("dealerDisplay").innerHTML = "";
				document.getElementById("dealerDisplay").style.display = "none";
				document.getElementById("PreviousDIV").style.display = "none";
				document.getElementById("NextDIV").style.display = "none";
				document.getElementById("ErrorMessages").style.display = "";
				var error_message = x[0].getElementsByTagName("Description")[0].childNodes[0].nodeValue;
				error_message = error_message.replace(/\[br\]/ig, "<br/>");
				document.getElementById("ErrorMessages").innerHTML = error_message;
			}
			catch(e){
				CallError();
			}
		}
 	}

	//====================================================================

	function CallError() 
	{
		document.getElementById("map").style.display = "none";
		document.getElementById("Wait").style.display = "none";
		document.getElementById("dealerDisplay").innerHTML = "";
		document.getElementById("dealerDisplay").style.display = "none";
		document.getElementById("PreviousDIV").style.display = "none";
		document.getElementById("NextDIV").style.display = "none";
		document.getElementById("ErrorMessages").style.display = "";
		document.getElementById("ErrorMessages").innerHTML = "The Dealer Locator is currently being maintained. Please Try Again Later.";
	}

	//====================================================================
	
	//Function To Create Markers
	function createMarker(point, number, name, address, city, state, zip, phone) {
		var marker = new GMarker(point);
		var mDisplay = "<p class=\"Dealer_Locator_Text\"><strong>Dealer # "+ number +"</strong><br><strong>"+ name +"</strong><br>"+ address +"<br>"+ city +", "+ state +" "+ zip +"<br>"+ phone +"</p>";

			GEvent.addListener(marker, "click", function() { map.closeInfoWindow(); }); 
			GEvent.addListener(marker, "mouseover", function() { marker.openInfoWindowHtml(mDisplay); });
			GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(mDisplay); });
			
		return marker;
	}
	
	//====================================================================

	function LoadPage() 
	{
		document.getElementById("map").style.display = "none";
		document.getElementById("Wait").style.display = "none";
		document.getElementById("ErrorMessages").style.display = "none";
		document.getElementById("dealerDisplay").style.display = "none";
		document.getElementById("PreviousDIV").style.display = "none";
		document.getElementById("NextDIV").style.display = "none";
	}
	
	//====================================================================
	
	function SubmitSearchForm(f,brand) 
	{
		if(f.PostalCode.value != "") {
			SearchPageReset();
			makeRequest(DL_REQUEST_PAGE + "?OnAuth=true&txtAddress="+ f.Address.value +"&txtCity="+ f.City.value +"&txtState="+ f.State.value +"&txtZIP="+ f.PostalCode.value +"&drpCountry=0&"+ brand +"=true");
		}else{
			return;
		}
	}
	
	//====================================================================
	
	function PageStartSearch(zip,brand) 
	{
		if(zip != "") {
			SearchPageReset();
			document.Dealer_Locator_Form.PostalCode.value = zip;
			makeRequest(DL_REQUEST_PAGE + "?OnAuth=true&txtAddress=&txtCity=&txtState=&txtZIP="+ zip +"&drpCountry=0&"+ brand +"=true");
		}else{
			return;
		}
	}

	//====================================================================

	function SearchPageReset()
	{
		global_error = false;
		CURRENT_PAGE = 1;
		PAGE_TOTAL = 0;
		START_INDEX = 0;
		END_INDEX = 0;
			
		document.getElementById("Wait").style.display = "";
		document.getElementById("dealerDisplay").innerHTML = "";
		document.getElementById("dealerDisplay").style.display = "none";
		document.getElementById("map").style.display = "none";
		document.getElementById("ErrorMessages").style.display = "none";
		document.getElementById("PreviousDIV").style.display = "none";
		document.getElementById("NextDIV").style.display = "none";
	}	
	
	//====================================================================

	function NewSearch() 
	{
		global_error = false;
		CURRENT_PAGE = 1;
		PAGE_TOTAL = 0;
		START_INDEX = 0;
		END_INDEX = 0;

		document.getElementById("dealerDisplay").innerHTML = "";
		document.getElementById("dealerDisplay").style.display = "none";
		
		document.getElementById("map").style.display = "none";
		document.getElementById("Wait").style.display = "none";
		document.getElementById("ErrorMessages").style.display = "none";
		document.getElementById("PreviousDIV").style.display = "none";
		document.getElementById("NextDIV").style.display = "none";
			
		document.getElementById("DL_SearchForm").style.display = "";
		document.getElementById("DL_SearchForm_Advanced").style.display = "none";
		
		document.Dealer_Locator_Form_Advanced.reset();
		document.Dealer_Locator_Form.reset();
	}

	//====================================================================

	function WriteDealerList()
	{
		var dealer_output = "";

		for(var i = START_INDEX; i < END_INDEX; i++)
		{
			dealer_output += PageContentArray[i];
		}
				
		document.getElementById("Wait").style.display = "none";
		document.getElementById("dealerDisplay").style.display = "";
		document.getElementById("dealerDisplay").innerHTML = dealer_output;
	}

	//====================================================================

	function SetMapMarkers()
	{
		try {
			//Proccess Marker Array To Markers
			for (var i = START_INDEX; i < END_INDEX; i++) {
				var markerpoints = new Marker();
				markerpoints = MarkerArray[i];
				var point = new GLatLng(markerpoints.Y,markerpoints.X);
				map.addOverlay(createMarker(point,markerpoints.Label,markerpoints.DName,markerpoints.DAddress,markerpoints.DCity,markerpoints.DState,markerpoints.DZip,markerpoints.DPhone));
			}
		}
		catch(e){
		}
	}

	//====================================================================

	function MovePage(movebtn)
	{
		try {
			if(movebtn.id == "PreviousBTN") {
				if(CURRENT_PAGE != 1 && PAGE_TOTAL > 1){ 
					CURRENT_PAGE = CURRENT_PAGE - 1; 
					document.getElementById("NextDIV").style.display = "";
				}
			}
		
			if(movebtn.id == "NextBTN") {
				if(CURRENT_PAGE != PAGE_TOTAL && PAGE_TOTAL > 1){ 
					CURRENT_PAGE = CURRENT_PAGE + 1; 
					document.getElementById("PreviousDIV").style.display = "";
				}
			}
			
			START_INDEX = (CURRENT_PAGE - 1) * MAX_PAGE_RECORDS;
			
			if(CURRENT_PAGE * MAX_PAGE_RECORDS > PageContentArray.length) {
				END_INDEX = PageContentArray.length;
			} else {
				END_INDEX = CURRENT_PAGE * MAX_PAGE_RECORDS;
			}
			
			if(END_INDEX == PageContentArray.length) {
				document.getElementById("NextDIV").style.display = "none";
			}
			
			if(START_INDEX < 1) {
				document.getElementById("PreviousDIV").style.display = "none";
			}
			
			WriteDealerList();
			map.clearOverlays();
			MapCenterIcon();
			SetMapMarkers();
		}
		catch(e){
		}	
	}
	//====================================================================
	
	function MapCenterIcon()
	{
		try {
			var MapCenter = new GLatLng(start_Y,start_X);
			map.setCenter(MapCenter, 7);
		}
		catch(err){
			var MapCenter = new GLatLng(38.0000,-97.0000);
			map.setCenter(MapCenter,1);
		}
		
		try {
			//Set Address Point Icon
			var moptions = new Object(); 
			var icon = new GIcon();
			icon.image = "/images/starsmall_red.gif";
			icon.iconSize = new GSize(18, 18);
			icon.iconAnchor = new GPoint(6, 20);
			icon.infoWindowAnchor = new GPoint(5, 1);
			moptions.title = "You Are Here";
			moptions.icon = icon;
			map.addOverlay(new GMarker(MapCenter, moptions));
		}
		catch(e){
		}
	}
	
	//====================================================================
	
	function SearchType(sbtn)
	{
		if(sbtn.id == "BasicSearch") {
			document.Dealer_Locator_Form_Advanced.reset();
			document.getElementById("DL_SearchForm").style.display = "";
			document.getElementById("DL_SearchForm_Advanced").style.display = "none";
		}
		if(sbtn.id == "AdvancedSearch") {
			document.Dealer_Locator_Form.reset();
			document.getElementById("DL_SearchForm_Advanced").style.display = "";
			document.getElementById("DL_SearchForm").style.display = "none";
		}
	}
		
	//====================================================================
