var prop21 = GetCookie('prop21') != null? GetCookie('prop21'):"DIRECT";
var prop22 = GetCookie('prop22') != null? GetCookie('prop22'):"N";

var cobaltTag = "?cs:pro=dig&cs:e=gw&cs:a=DIG_"+prop22+"_"+prop21;

function dealerWebSiteListTrack(url){
	clickTrack('DealerWebSiteList', 'false');
	// FIXME DealerWebsite(url)
}
function dealerWebSiteMapTrack(url){
	clickTrack('DealerWebSiteMap', 'true');
	window.open(url);
}
function scheduleServiceListTrack(url){
	clickTrack('ScheduleServiceList', 'true');
	DealerWebsite(url)
}
function scheduleServiceMapTrack(url){
	clickTrack('ScheduleServiceMap', 'true');
	window.open(url);
}
function findTiresListTrack(url){
	trackClickDealerFindTires();
	clickTrack('FindTiresList', 'true');
	DealerWebsite(url)
}
function findTiresMapTrack(url){
	trackClickDealerFindTires();
	clickTrack('FindTiresMap', 'true');
	window.open(url);
}

var oldDealerNumber = 0;
var firstTrack = false;
function hideShowDealerInfo(dealerNumber){
	if (firstTrack == false){
		var axel = Math.random() + ""; 
		var a = axel * 10000000000000; 
		jQuery("#trackingFrameInMaps").attr('src', "http://fls.doubleclick.net/activityi;src=2047248;type=sladq712;cat=gmgoo197;ord=" + a + "?");
		firstTrack = true;
	}
	if(dealerNumber == oldDealerNumber){
		var id = "showHide-" + dealerNumber;
		var div = document.getElementById(id);
		var isShow = div.style.display == "block";
		if(isShow){
			div.style.display = "none";
			div.parentNode.parentNode.removeClassName("dealerColorB");
			div.parentNode.parentNode.addClassName("dealerColorA");
		}
		else{
			div.style.display = "block";
			div.parentNode.parentNode.removeClassName("dealerColorA");
			div.parentNode.parentNode.addClassName("dealerColorB");
		}
		return;
	}

	var toShow = "showHide-" + dealerNumber;
	var divObj = document.getElementById(toShow);
	if(divObj!= null){
		divObj.parentNode.parentNode.removeClassName("dealerColorA");
		divObj.parentNode.parentNode.addClassName("dealerColorB");
		divObj.style.display = "block";
	}

	var toHide = "showHide-" + oldDealerNumber;
	divObj = document.getElementById(toHide);
	if(divObj != null){
		divObj.parentNode.parentNode.removeClassName("dealerColorB");
		divObj.parentNode.parentNode.addClassName("dealerColorA");
		divObj.style.display = "none";
	}
	oldDealerNumber = dealerNumber;
}

function setDealerIcon(d, num) {
	d.markerNumber = num;
	var myDomain = ""; //"http://www.goodwrench.com";
	d.icon = new GIcon();
	d.icon.image = myDomain + "/_res/i/mapIcons/numbers-" + num + ".png";
	d.icon.iconSize = new GSize(21, 34);
	d.icon.iconAnchor = new GPoint(11, 34);
	d.icon.infoWindowAnchor = new GPoint(11, 17);
}

function getDealerIcon(num) {
	var myDomain = ""; //"http://www.goodwrench.com";
	var icon = new GIcon();
	icon = new GIcon();
	icon.image = myDomain + "/_res/i/mapIcons/numbers-" + num + ".png";
	icon.iconSize = new GSize(21, 34);
	icon.iconAnchor = new GPoint(11, 34);
	icon.infoWindowAnchor = new GPoint(11, 17);
	return icon;
}

function getDealerSpecialtiesHelpButton(dealerSpecialties) {
	var specialtyId = dealerSpecialties.replace(/&/g,"").replace(/ /g,"").replace(/ /g,"").replace(/\//, "");
	var y = 100;
	var funtionCall = "showHideHelpBox2('floatingDiv');pausecomp("+ y + ");getMouseCoordinates(event, '" +specialtyId+"')";
	return '<a class="classHover" href="javascript:'+funtionCall+'" onmouseover="clearTimeout(flagFloatDiv);'+funtionCall+'"  onmouseout="timeOutfunc();"><img src="/_res/i/SearchMap/btn_question_map.gif" alt="" border="0" class="question" /></a>';	
}

function timeOutfunc(){
	flagFloatDiv=setTimeout("hideDiv('floatingDiv')",1000);
}
function timeOutfunc2(div){
	flagFloatDiv=setTimeout("hideDiv('"+ div + "')",1000);
}

//SPOUSB-1464
function pausecomp(millis) 
	{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } 
	while(curDate-date < millis);
	} 

/**
* capture mousemove event, this statement will cause browser to
* call getMouseCoordites function each time mouse moves
*/

/**
*identify which event is supported
* Based on that collect pageX and pageY properties of the event object
* pageX and pageY gets the X and Y cursor coordinates
*/

var divObj;
var ie = document.all ? true : false;

function getMouseCoordinates(event, divId){
	var x = 0;
	var y = 0;
	var s = 0;// distance betwen the help box and the ? button
	divContent = document.getElementById(divId);
	divObj = document.getElementById("floatingDiv");

	divObj.innerHTML = divContent.innerHTML;
	divObj.className = divContent.className;

	ev = event || window.event;
	x = ie ? ev.clientX+document.documentElement.scrollLeft:ev.pageX;
	y = ie ? ev.clientY+document.documentElement.scrollTop:ev.pageY;
	s = ie ? 30:10;

	divObj.style.top = (y-parseInt(divObj.offsetHeight)-s)+ "px";
	divObj.style.left = x + "px";
}

function getFileByAjax(url, success) {
	jQuery.ajax({
		url: url,
		async: false,
		success: success
	});
}

function removeDealersInfoBlanks(dealers) {
	var fieldsWithBlanks = ["name","distance","url","bpUrl","street","city","state","zip","fax","goodwrenchAndGo"];
	jQuery(dealers).find("dealer").each(function() {
		jQuery(this).find("*").each(function() {
			var tagName = this.tagName;
			if (jQuery.inArray(tagName, fieldsWithBlanks) > -1) {
				var text = jQuery(this).text();
				text = text.replace(/^\s*|\s*$/g,"");
				jQuery(this).text(text); 
				if (tagName == "fax") {
					text = text.replace("\n)",")");
					jQuery(this).text(text);
				}
			}
		});
	});
}

function getUpdatedDealersPhone(dealers, phones) {
	var dealersUpdated = dealers;
	
	jQuery(dealersUpdated).find("dealer").each(function() {
		var dealerId = jQuery(this).find("id").text().replace(" ", "");
		var dealerPhoneBac = jQuery(phones).find("Dealer BAC:contains('" + dealerId + "')");
		
		if (jQuery(dealerPhoneBac).length > 0) {
			var dealerPhone = jQuery(dealerPhoneBac).parent().find("RFCLine").text();
			dealerPhone = "(" + dealerPhone.substring(0,3) + ") " + dealerPhone.substring(3,6) + "-" + dealerPhone.substring(6,10);
			
			jQuery(this).find("phone").text(dealerPhone);
		}
	});
	
	return dealersUpdated;
}

var Dealer = Class.create();

Dealer.prototype = {
	initialize: function() {
		try{
			this.id = "";
			this.name = "";
			this.icon = G_DEFAULT_ICON;
			this.distance = "";
			this.street = "";
			this.city = "";
			this.state = "";
			this.zip = "";
			this.goodwrenchAndGo = true;
			this.dealerURL = null;
			this.dealerNameURL = null;
			this.dealerTireURL = null;
			this.bpURL = null;
			this.point = null;
			this.coupons = [];
			this.serviceItems = [];
			this.services = [];
			this.brands = [];
			this.div = null;
			this.couponLink = "";

			// These vars are added to create association with marker and its num mark
			this.markerNumber = "";
			this.marker = null;
			this.iconInfo = null;

			this.sortCriteria = "distance";

		}catch(err){window.alert("dealer - initialize");}
	},

	populateFromXML:  function(el) {
		try{
			this.id = getElementTextNS("", "id", el, 0);
			this.name = getElementTextNS("", "name", el, 0);
			this.distance = getElementTextNS("", "distance", el, 0);
			this.street = getElementTextNS("", "street", el, 0);
			this.city = getElementTextNS("", "city", el, 0);
			this.state = getElementTextNS("", "state", el, 0);
			this.zip = getElementTextNS("", "zip", el, 0);
			this.goodwrenchAndGo = getElementTextNS("", "goodwrenchAndGo", el, 0);
			this.phone = getElementTextNS("", "phone", el, 0);
			this.fax = getElementTextNS("", "fax", el, 0);
			this.dealerURL = getElementTextNS("", "url", el, 0);

			if (this.dealerURL != null && this.dealerURL != "")
			{
				var u = new String(this.dealerURL);
				if (u.endsWith("/HomePage"))
				{
					u = u.gsub("/HomePage", "");
				}
				if (u.endsWith("/ServiceApptForm") == false)
				{
					u = u + "/ServiceApptForm";
				}
				this.dealerURL = u+cobaltTag+"&cs:a:e=gwsched";
			}

			this.dealerNameURL = getElementTextNS("", "url", el, 0);
			if (this.dealerNameURL != null && this.dealerNameURL != "")
			{
				var u = new String(this.dealerNameURL);
				if (u.endsWith("/HomePage"))
				{
					u = u.gsub("/HomePage", "");
				}
				if (u.endsWith("/Service") == false)
				{
					u = u + "/Service";
				}
				this.dealerNameURL = u+cobaltTag;
			}

			this.dealerTireURL = getElementTextNS("", "url", el, 0);
			if (this.dealerTireURL != null && this.dealerTireURL != "")
			{
				var u = new String(this.dealerTireURL);
				if (u.endsWith("/HomePage"))
				{
					u = u.gsub("/HomePage", "");
				}
				if (u.endsWith("/TireFinder") == false)
				{
					u = u + "/TireFinder";
				}
				this.dealerTireURL = u+cobaltTag+"&cs:a:e=gwtirequote";
			}


			this.bpURL = getElementTextNS("", "bpUrl", el, 0);

			this.couponLink = getElementTextNS("", "url", el, 0);
			if (this.couponLink != null && this.couponLink != "")
			{
				var u = new String(this.couponLink);
				if (u.endsWith("/HomePage"))
				{
					u = u.gsub("/HomePage", "");
				}
				if (u.endsWith("/ServiceSpecials") == false)
				{
					u = u + "/ServiceSpecials";
				}
				this.couponLink = u+cobaltTag+"&cs:a:e=gwservcoup";
			}


			var lat = getElementTextNS("", "latitude", el, 0);
			var lng = getElementTextNS("", "longitude", el, 0);

			this.setLatLng(lat, lng);

			var s = el.getElementsByTagName("services")[0];
			if(s != null){
				var ls = s.getElementsByTagName("service");
				if (ls != null)
				{
					for (var i = 0; i < ls.length; i++)
					{
						if(ls[i].attributes[0].value != "hfa")
							this.services.push( getElementTextNS("", "service", s, i) );
					}
				}
			}

			var b = el.getElementsByTagName("brands")[0];
			if(b != null){
				var lb = b.getElementsByTagName("brand");
				if (lb != null)
				{
					for (var i = 0; i < lb.length; i++)
					{
					  this.brands.push( getElementTextNS("", "brand", b, i) );
					}
				}
			}

			var c = el.getElementsByTagName("coupons")[0];
			var lc = c.getElementsByTagName("coupon");
			if (lc != null)
			{
				for (var i = 0; i < lc.length; i++)
				{
				  this.coupons.push( getElementTextNS("", "coupon", c, i) );
				}
			}
		}catch(err){window.alert("dealer - populate from xml");}
	},

	setLatLng: function(lat, lng) {
		try{this.point = new GLatLng(lat, lng);}
		catch(err){window.alert("setLatLng");}
	},

	getDealerInfoHtml: function() {
	try{
		var clickId = "";
		var target = "_new";

		var dealer = this;
		var container = NewDiv("containerDiv", null);
		var div = NewDiv("mapAddressGroup", null);
		var address = NewDiv("mapAddress", null);

		div.setAttribute('onclick', 'hideHelpBoxes()');

		if(dealer.distance != "0.0"){
			new Insertion.Bottom(address, "<strong>" + dealer.distance  + " miles "+ "</strong>");
			LineBreak(address);
		}

		clickId = "DealerInfoHtmlDealerSite";
		var myNameUrl = (dealer.dealerNameURL != null) ? dealer.dealerNameURL : "";
		if (myNameUrl != "")
		{
			//l = NewLink("linkDealerInfo", "javascript:onclickTracking('"+ clickId + "', '" + myNameUrl + "&cs:a:e=gwdealerhome', '" + target +"');", "" , "<strong>" + dealer.name + "</strong>");
			l = NewLink("linkMAP",myNameUrl+"&cs:a:e=gwdealerhome",target,dealer.name,clickId);
			address.appendChild(l);
			LineBreak(address);
		}
		else {
			new Insertion.Bottom(address,  '<div class="dealerNameMap"><strong>' + dealer.name + '</strong></div>');
		}
		new Insertion.Bottom(address,  dealer.street);
		LineBreak(address);
		new Insertion.Bottom(address,  dealer.city + ", " + dealer.state);
		LineBreak(address);
		new Insertion.Bottom(address,  dealer.zip);
		LineBreak(address);
		new Insertion.Bottom(address,  "Phone: " + dealer.phone);
		LineBreak(address);
		new Insertion.Bottom(address,  "Fax: " + dealer.fax);

		if (myNameUrl != "")
		{
			 LineBreak(address);
			 l = NewLink("linkDealerInfo","javascript:onclickTracking('"+ clickId + "', '" + myNameUrl + "&cs:a:e=gwhrsanddir', '" + target +"');", "" , "Service Information &amp; Hours");
			 address.appendChild(l);
		}

		clickId = "DealerInfoHtmlScheduleService";
		var myUrl = (dealer.dealerURL != null) ? dealer.dealerURL : "";
		if (myUrl != "")
		{
			 LineBreak(address);
			 //l = NewLink("linkDealerInfo", "javascript:onclickTracking('"+ clickId + "', '" + myUrl + "', '" + target +"');", "" , "Schedule Service");
			 l = NewLink("linkDealerInfo",myUrl,target,"Schedule Service",clickId);
			 address.appendChild(l);
		}




		
		
		clickId = "DealerInfoHtmlFindTires";
		var myTiresUrl = (dealer.dealerTireURL != null) ? dealer.dealerTireURL : "";
		
		
		
		if (myTiresUrl != "")
		{
		 	var services = dealer.services;
			var hasTireStore=false;
				if(services!= null){
					for (var i = 0; i < services.length; i++){
         					if(services[i] == "gte TIRE ECOMMERCE"){
			          		hasTireStore=true;
           					}
                     }
                }
			var linkText = hasTireStore?"Tire - Store":"Find Tires";
			LineBreak(address);
			//l = NewLink("linkDealerInfo", "javascript:onclickTracking('"+ clickId + "', '" + myTiresUrl + "', '" + target +"');", "" , linkText);
			l = NewLink("linkDealerInfo",myTiresUrl,target,linkText,clickId);
			address.appendChild(l);
		}




		clickId = "DealerInfoHtmlOnlineOffers";
		var myOnlineOffersUrl = (dealer.couponLink != null) ? dealer.couponLink : "";
		if (myOnlineOffersUrl != "")
		{
			LineBreak(address);
			//l = NewLink("linkDealerInfo", "javascript:onclickTracking('"+ clickId + "', '" + myOnlineOffersUrl + "', '" + target +"');", "" , "Online Offers");
			l = NewLink("linkDealerInfo",myOnlineOffersUrl,target,"Online Offers",clickId);
			address.appendChild(l);
		}



		LineBreak(address);
		LineBreak(address);
		var lineSeparator = NewDiv("lineSeparator", null);
		address.appendChild(lineSeparator);
		LineBreak(address);

		// Begin for Gray Div
		var grayDiv = NewDiv(null, null);
		grayDiv.addClassName("grayInfoDiv");

		address.appendChild(grayDiv);

		var services = dealer.services;
		if (services != null && services.length > 0)
		{
			

			var result = "";
			for (var i = 0; i < dealer.services.length; i++)
			{

				if (dealer.services[i].indexOf("gte TIRE ECOMMERCE") == -1) {
					var serviceDiv = NewDiv("serviceDiv", dealer.services[i]);
					result += "<li>" + dealer.services[i]+ " "+getDealerSpecialtiesHelpButton(dealer.services[i])+ "</li>";
	
					src = "/_res/i/DealerInfo/help.gif";
					img = $(document.createElement("img"));
					img.setAttribute("src", src);
					img.addClassName("dealerHelp");

					link = NewLink("dealerHelp", "javascript:dealerHelp", null, null);
					link.appendChild(img);
				}
			}
			if(result.length > 0){
				Append(grayDiv, "<ul>" + result + "</ul>");
			}
			LineBreak(grayDiv);
		}

		var brands = dealer.brands;
		if(brands != null && brands.length > 0){
			new Insertion.Bottom(grayDiv, "");
			var brandDiv = NewDiv("brandDiv", null);
			for(var j = 0; j<brands.length; j++){
				var brand = brands[j];

				////chevy cadillac gmc buick pontiac
				//if(){
				//if(brand == 'chevy' || brand == 'cadillac' || brand == 'gmc' || brand == 'buick' || brand == 'pontiac'||brand == '11' || brand == '12' || brand == '13' || brand == '16' || brand == '48'  ){
					var src = "/_res/i/DealerInfo/brand/"+ brand +".gif";
					var img = $(document.createElement("img"));
					img.setAttribute("src", src);
					brandDiv.appendChild(img);
					brandDiv.addClassName("grayInfoDiv");
				//}
			}
			grayDiv.appendChild(brandDiv);
		}
		// End for Gray Div

		if (dealer.coupons.length > 0)
		{

		}
		div.appendChild(address);
		div.appendChild( NewDiv("clearer", "<!-- -->") );
		container.appendChild(div);

		return container.innerHTML;
	}
	catch(err){window.alert("getDealerInfoHtml");}
	},

	buildAddress: function() {
		var s = this.street + ", " + this.city + ", " + this.state + " " + this.zip;
		return s
	},

	buildCouponLink: function() {
		var s = "/locatedealer/goodwrench/coupon/coupon_detail.jsp?";
		s += "referer=http://www.goodwrench.com/dealersearch/searchResults.jsp";
		s += "&dealer=" + this.rawId;
		return s
	},

	centerOnMap: function(dealerMapper, zoomLevel) {
		if (this.point == null)
		{
			dealerMapper.centerMapOnAddress(this.buildAddress(), zoomLevel);
		}
		else
		{
			dealerMapper.centerMap(this.point, zoomLevel);
		}
	}
};


function alertLoad() {
}

function sortfunction(a, b){
	return a-b;
}

var selectedSearchType = "";
var _dealerMapperRequest;
var _currentDealerMapper = null;
var DealerMapper = Class.create();

DealerMapper.prototype = {

	initialize: function( elementName ) {
		
		this.map = new GMap2( document.getElementById( elementName == null ? "map" : elementName ) );

		this.showZoomControl = true;
		this.showTypeControl = true;
		this.geoCoder = new GClientGeocoder();
		this.defaultZoom = selectedZoom;
		this.defaultZoomLevel = this.defaultZoom;
		this.defaultPoint = null;
		this.traffic = null;
		this.trafficAdded = false;
		this.defaultIcon = G_DEFAULT_ICON;
		this.markerManager = null;
		this.useMarkerManager = false;
		this.mySetupFunction = null;

		this.baseUrl = selectedBaseUrl;
		this.dealerList = [];
		this.dealerLoadCallBack = null;
		this.mapWasCentered = false;
		this.recenterToFirstDealer = false;

		this.currentPage = 0;
		this.pages = 1000;
		this.dealersByPage = 3;

		this.currentMapPage = 0;
		this.pagesMap = 1000;
		this.dealersMapByPage = 10;

		this.sortCriteria = selectedSortCriteria;
	},

	getDealerMapperLength: function(){
		return dealerList.lenght;
	},

	getDealerDisplay4MapView: function(dealer, number) {
		var clickId = "";
		var target = "_new";

		var div = NewDiv("mapAddressGroup", null);
		var n = new Number(number);
		n++;

		//if(n > this.dealersMapByPage){
		//	div.style.display = "none";
		//}

		var preMapDigit = NewDiv("preMapDigit", null);

		var centerAndOpenInfo = "dealerMapper.centerAndOpenInfo(dealerMapper.dealerList["+number+"]);";

		var digit = NewLink("mapDigit","javascript:"+centerAndOpenInfo,null,"<div class='mapNumber'>"+ n +"</div>");

		var address = NewDiv("mapAddress", null);
		address.appendChild(preMapDigit);
		address.appendChild(digit);

		// Div for dealerInfoDiv section
		var dealerInfoDiv = NewDiv("dealerMapDiv", null);
		LineBreak(dealerInfoDiv);
		address.appendChild(dealerInfoDiv);

		var myNameUrl = (dealer.dealerNameURL != null) ? dealer.dealerNameURL : "";
		var maxDealer = this.dealerList.length-1;
		var hideShowScript = "hideShowDealerInfo(" + n + ");";
		//var centerAndOpenInfo = "";//"dealerMapper.centerAndOpenInfo(dealerMapper.dealerList["+number+"])";
		if (isDmaPage == true){
		l = NewLink("nameUrlLink linkMAP", "javascript:"+ hideShowScript+centerAndOpenInfo +"dealerWebSiteListTrack('"+myNameUrl+"&cs:a:e=gwdealerhome');clickTrack(clickTrakingArray['DMADealerMapNameList'] , false);SpotlightTag('dealerInfo');", "" , "<strong>" + dealer.name + "</strong>");
		}else{
		l = NewLink("nameUrlLink linkMAP", "javascript:"+ hideShowScript+centerAndOpenInfo +"dealerWebSiteListTrack('"+myNameUrl+"&cs:a:e=gwdealerhome');clickTrack(clickTrakingArray['DealerMapNameList'] , false);", "" , "<strong>" + dealer.name + "</strong>");
		}

		dealerInfoDiv.appendChild(l);
		LineBreak(dealerInfoDiv);

		var hideDiv = NewDiv("hideDiv", null);
		hideDiv.setAttribute("id", 'showHide-'+n);
		dealerInfoDiv.appendChild(hideDiv);

		if(dealer.distance != "0.0"){
			var st = $(document.createElement("strong"));
			st.update("<b>Distance " + dealer.distance + " miles</b><br/>");
			hideDiv.appendChild(st);
		}

		var adrs = NewLink(	"adrs",
							"javascript:dealerMapper.dealerList["+number+"].centerOnMap(dealerMapper, dealerMapper.defaultZoomLevel)", null,
							dealer.street + "<br />" + dealer.city + ", " + dealer.state + "<br />" +dealer.zip );
		hideDiv.appendChild(adrs);
		LineBreak(hideDiv);

		new Insertion.Bottom(hideDiv,  "Phone: " + dealer.phone);

		clickId = "DealerMapViewDealerSite";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		if (myNameUrl != "")
		{
			 LineBreak(hideDiv);
			 //l = NewLink("linkMAP","javascript:onclickTracking('"+ clickId + "', '" + myNameUrl + "&cs:a:e=gwhrsanddir', '" + target +"');", "" , "Dealer Website");
			 l = NewLink("linkMAP",myNameUrl+"&cs:a:e=gwdealerhome",target,"Dealer Website",clickId);
			 hideDiv.appendChild(l);
		}

		// Div for dealerServiceListDiv section
		var dealerServiceListDiv = NewDiv("dealerServiceMapDiv", null);
		hideDiv.appendChild(dealerServiceListDiv);

		clickId = "DealerMapViewScheduleService";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myUrl = (dealer.dealerURL != null) ? dealer.dealerURL : "";
		if (myUrl != "")
		{
			LineBreak(dealerServiceListDiv);
			var src = "/_res/i/DealerInfo/scheduleService.gif";
			var imgTag = $(document.createElement("img"));
			imgTag.setAttribute("src", src);
			link = NewLink("linkMAP",myUrl,target,"",clickId);
			//link = NewLink("linkMAP",myUrl, target,"");
			link.appendChild(imgTag);
			dealerServiceListDiv.appendChild(link);
		}

		clickId = "DealerMapViewFindTires";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myTiresUrl = (dealer.dealerTireURL != null) ? dealer.dealerTireURL : "";  



      if (myTiresUrl != "")
            {
                //in case prog code be gte change link text to "Tire - Store" otherwise: should it keep as it is? ->Find Tires
             var services = dealer.services;
       var hasTireStore=false;
                if(services!= null){
                 for (var i = 0; i < services.length; i++){
         if(services[i] == "gte TIRE ECOMMERCE"){
          hasTireStore=true;
           }
                     }
                }
               var linkText = hasTireStore?"Tire - Store":"Find Tires";
         LineBreak(dealerServiceListDiv);
         link = NewLink("linkMAP",myTiresUrl,target,linkText,clickId);
		 dealerServiceListDiv.appendChild(link);                
            }   



		clickId = "DealerMapViewOnlineOffers";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myOnlineOffersUrl = (dealer.couponLink != null) ? dealer.couponLink : "";
		if (myOnlineOffersUrl != "")
		{
			LineBreak(dealerServiceListDiv);
			
			link = NewLink("linkMAP",myOnlineOffersUrl,target,"Online Offers",clickId);
			//link = NewLink("linkMAP", myOnlineOffersUrl, target, "Online Offers");
			dealerServiceListDiv.appendChild(link);
		}

		div.appendChild(address);
		div.appendChild( NewDiv("clearer", "<!-- -->") );
		dealer.div = div;
		if(eval(n) == 1){
			oldDealerNumber = 1;
			hideDiv.style.display = "block";
			address.removeClassName("dealerColorA");
			address.addClassName("dealerColorB");
		}
		return div;
	},

	getDealerDisplay4ListView: function(dealer, number) {
		var clickId = "";
		var target = "_new";

		var div = NewDiv("listAddressGroup", null);
		var n = new Number(number);
		n++;

		var preListDigit = NewDiv("preListDigit", null);
		var digit = NewLink("listDigit",
							"javascript:dealerMapper.dealerList["+number+"].centerOnMap(dealerMapper, dealerMapper.defaultZoomLevel)", null,
							"<div class='listNumber'>"+ n +"</div>");

		var address = NewDiv("listAddress", null);

		address.appendChild(preListDigit);
		address.appendChild(digit);
		if(n % 2 == 0){
			address.addClassName("dealerColorA");
		}
		else{
			address.addClassName("dealerColorB");
		}


		// Div for dealerInfoDiv section
		var dealerInfoDiv = NewDiv("dealerInfoDiv", null);
		LineBreak(dealerInfoDiv);
		address.appendChild(dealerInfoDiv);

		clickId = "DealerListViewDealerSite";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myNameUrl = (dealer.dealerNameURL != null) ? dealer.dealerNameURL : "";
		//l = NewLink("linkMAP", "javascript:onclickTracking('"+ clickId + "', '" + myNameUrl + "&cs:a:e=gwdealerhome', '" + target +"');", "" , "<strong>" + dealer.name + "</strong>");
		l = NewLink("linkMAP",myNameUrl+"&cs:a:e=gwdealerhome",target,dealer.name,clickId);
		dealerInfoDiv.appendChild(l);
		LineBreak(dealerInfoDiv);

		if(dealer.distance != "0.0"){
			var st = $(document.createElement("strong"));
			st.update("<b>Distance " + dealer.distance + " miles</b><br/>");
			dealerInfoDiv.appendChild(st)
		}

		var adrs = NewLink(	"adrs",
							"javascript:dealerMapper.dealerList["+number+"].centerOnMap(dealerMapper, dealerMapper.defaultZoomLevel)", null,
							dealer.street + "<br />" + dealer.city + ", " + dealer.state + "<br />" +dealer.zip );
		dealerInfoDiv.appendChild(adrs);
		LineBreak(dealerInfoDiv);

		new Insertion.Bottom(dealerInfoDiv,  "Phone: " + dealer.phone);

		if (myNameUrl != "")
		{
			 LineBreak(dealerInfoDiv);
			 //l = NewLink("linkMAP","javascript:onclickTracking('"+ clickId + "', '" + myNameUrl + "&cs:a:e=gwhrsanddir', '" + target +"');", "" , "Dealer Website");
			 l = NewLink("linkMAP",myNameUrl+"&cs:a:e=gwdealerhome",target,"Dealer Website",clickId);
			 dealerInfoDiv.appendChild(l);
		}

		// Div for dealerInfoDiv section
		var dealerSpecialtiesDiv = NewDiv("dealerSpecialtiesDiv", null);
		address.appendChild(dealerSpecialtiesDiv);

		LineBreak(dealerSpecialtiesDiv);
		new Insertion.Bottom(dealerSpecialtiesDiv,  "<b>Dealer Specialties: </b>");
		LineBreak(dealerSpecialtiesDiv);

		var services = dealer.services;
		if (services != null && services.length > 0)
		{
			
			var result = "";
			for (var i = 0; i < dealer.services.length; i++)			
			{
				if (dealer.services[i].indexOf("gte TIRE ECOMMERCE") == -1) {
				result += "<li>" + dealer.services[i] + " "+getDealerSpecialtiesHelpButton(dealer.services[i])+ "</li>";
					}
				}
				if(result.length > 0){
				Append(dealerSpecialtiesDiv, "<ul>" + result + "</ul>");
				}
			}

		//LineBreak(dealerSpecialtiesDiv);
		var brands = dealer.brands;
		if(brands != null && brands.length > 0){
			new Insertion.Bottom(address, "");
			var brandDiv = NewDiv("brandDiv", null);
			for(var j = 0; j<brands.length; j++){
				var brand = brands[j];
				//if(brand == 'chevy' || brand == 'cadillac' || brand == 'gmc' || brand == 'buick' || brand == 'pontiac'||brand == '11' || brand == '12' || brand == '13' || brand == '16' || brand == '48'  ){
					var src = "/_res/i/DealerInfo/brand/"+ brand +".gif";
					var img = $(document.createElement("img"));
					img.setAttribute("src", src);
					brandDiv.appendChild(img);
				//}
			}
			dealerSpecialtiesDiv.appendChild(brandDiv);
		}

		// Div for dealerServiceListDiv section
		var dealerServiceListDiv = NewDiv("dealerServiceListDiv", null);
		address.appendChild(dealerServiceListDiv);

		clickId = "DealerListViewScheduleService";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myUrl = (dealer.dealerURL != null) ? dealer.dealerURL : "";
		if (myUrl != "")
		{
			LineBreak(dealerServiceListDiv);
			var src = "/_res/i/DealerInfo/scheduleService.gif";
			var imgTag = $(document.createElement("img"));
			imgTag.setAttribute("src", src);
			link = NewLink("linkMAP", "javascript:onclickTracking('"+ clickId + "', '" + myUrl + "', '" + target +"');", "" , "");
			link = NewLink("linkMAP",myUrl,target,"",clickId);
			link.appendChild(imgTag);
			dealerServiceListDiv.appendChild(link);
		}

		clickId = "DealerListViewFindTires";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myTiresUrl = (dealer.dealerTireURL != null) ? dealer.dealerTireURL : "";
		if (myTiresUrl != "")
		{
			LineBreak(dealerServiceListDiv);
			//link = NewLink("linkMAPTires", "javascript:onclickTracking('"+ clickId + "', '" + myTiresUrl + "', '" + target +"');", "" , "Find Tires");
			link = NewLink("linkMAP",myTiresUrl,target,"Find Tires",clickId);
			dealerServiceListDiv.appendChild(link);
		}

		clickId = "DealerListViewOnlineOffers";
		if (isDmaPage == true){
			clickId = "DMA"+clickId;
		}
		var myOnlineOffersUrl = (dealer.couponLink != null) ? dealer.couponLink : "";
		if (myOnlineOffersUrl != "")
		{
			LineBreak(dealerServiceListDiv);
			//link = NewLink("linkFindOffers", "javascript:onclickTracking('"+ clickId + "', '" + myOnlineOffersUrl + "', '" + target +"');", "" , "Online Offers");
			link = NewLink("linkMAP",myOnlineOffersUrl,target,"Online Offers",clickId);
			dealerServiceListDiv.appendChild(link);
		}

		div.appendChild(address);
		div.appendChild( NewDiv("clearer", "<!-- -->") );
		dealer.div = div;
		return div;
	},

	noResults: function () {
		$("showing-top").update("");
	 	$("showing-bottom").update("");
		$("mapScroll").update("");
		var div = NewDiv("mapAddressGroup", null);
		div.update("Your search returned no results.");
		LineBreak(div);
		var l = NewLink("linkMAP",
						"javascript:aloneTracking('SearchAdvancedLink');showHideDiv('advancedSearch'); hideDiv('sort_dealer_select');", null,
						"<strong>Search Again</strong>");
		div.appendChild(l);
		$("mapScroll").appendChild(div);
	},

	setDealerFound: function(){
		$("dealerFound").update(this.dealerList.length);
	},
	setNavigationPagesNumber: function (){
		this.pagesMap = parseInt((this.dealerList.length-1)/this.dealersMapByPage);
		this.pages = parseInt((this.dealerList.length-1)/this.dealersByPage);
	},
	paintPins: function(){
		for(var i = 0; i < this.dealerList.length; i++)
		{
			if(i==0){
				this.centerMap(this.dealerList[i].point, this.defaultZoomLevel);
			}
			setDealerIcon(this.dealerList[i], i+1);
			this.mapDealer(this.dealerList[i], false);
		}
	},

	paintMapScroll: function(){
		$("mapScroll").update("");

		var start = this.currentMapPage*this.dealersMapByPage;
		var end = this.currentMapPage*this.dealersMapByPage+this.dealersMapByPage;

		if (end > this.dealerList.length){
			end = this.dealerList.length;
		}
		for (var i=start; i< end; i++){
			$("mapScroll").appendChild(this.getDealerDisplay4MapView(this.dealerList[i], i)) ;

			if (i == start){
				if (isDmaPage == true){
		 			this.closeInfoWindow();
					this.centerMap(this.dealerList[i].point, this.defaultZoomLevel);
					if(isInfoMapHide(this.dealerList[i].markerNumber)){
						hideShowDealerInfo(this.dealerList[i].markerNumber);
					}
				}
				else {
					this.centerAndOpenInfo(this.dealerList[i]);
				}
			}
		}
		$("showing-top").update("Showing " + (start+1) + "-" + end + " Dealers of " +  this.dealerList.length);

	},
	paintListScroll: function(){
		this.paintPagesNumberList();

		$("listScroll").update("");
		var start = this.currentPage*this.dealersByPage;
		var end = this.currentPage*this.dealersByPage+this.dealersByPage;

		if (end > this.dealerList.length){
			end = this.dealerList.length;
		}
		for (var i=start; i< end; i++){
			$("listScroll").appendChild(this.getDealerDisplay4ListView(this.dealerList[i], i)) ;
		}
	},
	paintPagesNumberList: function(){
		$("pagesNumber").update("");

		var start = 0
		var end = 2;

		if (this.currentPage > 1){
			end = this.currentPage+1;
		}
		if (end >= this.pages){
			end = this.pages;
		}
		start = end-2;

		if (start < 0){
			start = 0;
		}

		var pageNumberDivContainer = NewDiv("pageNumberDivContainer", null);

		var backward = NewLink("pageNumberLink", "javascript:listViewByPage('backward')", null, "&lt;");
		backward.style.display = "block";
		pageNumberDivContainer.appendChild(backward);

		for(var i = start; i <= end; i++){
			var pageNumberLink = NewLink("pageNumberLink", "javascript:showListViewByPage("+ i + ")", null, (i+1)+"");
			pageNumberLink.style.display = "block";
			pageNumberDivContainer.appendChild(pageNumberLink);
		}

		var forward  = NewLink("pageNumberLink", "javascript:listViewByPage('forward')" , null, "&gt;");
		forward.style.display = "block";
		pageNumberDivContainer.appendChild(forward);
		$("pagesNumber").appendChild(pageNumberDivContainer);
	},

	paintAllListScroll: function(){
		$("listScroll").update("");
		var start = 0;
		var end =  this.dealerList.length;

		for (var i=start; i< end; i++){
			$("listScroll").appendChild(this.getDealerDisplay4ListView(this.dealerList[i], i)) ;
		}
	},
	nextPageInMapScroll: function(){
		this.currentMapPage++;
		if (this.currentMapPage > this.pagesMap){
			this.currentMapPage = this.pagesMap;
		}
		this.paintMapScroll();
	},
	prevPageInMapScroll: function(){
		this.currentMapPage--;
		if (this.currentMapPage < 0){
			this.currentMapPage = 0;
		}
		this.paintMapScroll();
	},
	nextPageInListScroll: function(){
		this.currentPage++;
		if (this.currentPage > this.pages){
			this.currentPage = this.pages;
		}
		this.paintListScroll();
	},
	prevPageInListScroll: function(){
		this.currentPage--;
		if (this.currentPage < 0){
			this.currentPage = 0;
		}
		this.paintListScroll();
	},

	dealerResults: function() {
		this.setDealerFound();

		var dealerList = this.dealerList;

		$("mapScroll").update("");
		$("listScroll").update("");

		if (dealerList.length == 0)
		{
			this.noResults();
		}
		else
		{
			this.buildDealerMapByPage();

			var dealersByPage = this.dealersByPage;
			var pages = (dealerList.length / dealersByPage) - (dealerList.length % dealersByPage) / dealersByPage;
			pages = dealerList.length % dealersByPage == 0 ? pages : pages+1;

			var listByPage = $("listByPage");
			listByPage.update("");

			var pageNumber = 0;
			var currentDiv = NewDiv();

			for(var i = 0; i < dealerList.length; i++)
			{
				var dealer = dealerList[i];
				setDealerIcon(dealer, i+1);

				$("mapScroll").appendChild(this.getDealerDisplay4MapView(dealer, i) );
				$("listScroll").appendChild(this.getDealerDisplay4ListView(dealer, i) ); // load List View All

				if (i == 0)
				{
					this.mapWasCentered = true;
					this.mapDealer(dealerList[i], true, this.defaultZoomLevel);
				}
				else
				{
					this.mapDealer(dealerList[i], false);
				}


				if(i % dealersByPage == 0){
					pageNumber++;
					currentDiv = NewDiv();
					currentDiv.setAttribute("id", "listPage-"+pageNumber);
					currentDiv.style.display = "block";
					listByPage.appendChild(currentDiv);

				}

				if(pageNumber > 1){
					currentDiv.style.display = "none";
				}
				currentDiv.appendChild(this.getDealerDisplay4ListView(dealerList[i], i)); // load List View by Page
			}
			this.pages = pages;
			this.buildDealerLinksForPage();
		}
	},

	buildDealerMapByPage: function(){
		//alert("buildDealerMapByPage");
		//var dealersByPage = this.dealersMapByPage;
		//var dealerList = this.dealerList;
		//var pages = (dealerList.length / dealersByPage) - (dealerList.length % dealersByPage) / dealersByPage;
		//pages = dealerList.length % dealersByPage == 0 ? pages : pages+1;
		//this.pagesMap = pages;
		//mapViewByPage("initial");
		// Nothing else to do!
	},

	buildDealerLinksForPage: function(){
		var pages = this.pages;
		var pagesNumber = $("pagesNumber");
		pagesNumber.style.display = "block";

		pagesNumber.update("");

		pageNumberDivContainer = NewDiv("pageNumberDivContainer", null);
		pagesNumber.appendChild(pageNumberDivContainer);

		var backward = NewLink("pageNumberLink", "javascript:listViewByPage('backward')", null, "&lt;");
		backward.style.display = "block";
		pageNumberDivContainer.appendChild(backward);

		var pageNumberLink = null;
		var pageNumber = null;
		for(var index = 1; index<=pages; index++){
			pageNumberLink = NewLink("pageNumberLink", "javascript:listViewByPage("+ index + ")", null, index);
			pageNumberLink.setAttribute("id", "pageNumberLink-" + index );
			pageNumberDivContainer.appendChild(pageNumberLink);

			pagesNumber.appendChild(pageNumberDivContainer);
			if(index > this.dealersByPage){
				pageNumberLink.style.display = "none";
			}
			else{
				pageNumberLink.style.display = "block";
			}
		}

		var forward  = NewLink("pageNumberLink", "javascript:listViewByPage('forward')" , null, "&gt;");
		forward.style.display = "block";
		pageNumberDivContainer.appendChild(forward);
	},

	buildDealerList: function(request, criteria) {

		// if we're coming into the page for the first time, use the value
		// of the rdoOffers querystring parameter for to determine if this
		// is a GNG-only search. Otherwise, use the selectedSearchType - which
		// is selected within this page to determine if this is a GNG-only search.
		var isGnGSearch = false;
		if (selectedSearchType == ""){
			if (getParam("rdoOffers") == "gwngo") {
				isGnGSearch = true;
			}
		}
		else if (selectedSearchType == "gwngo") {
			isGnGSearch = true;
		}
		else {
			isGnGSearch = false;
		}

		var e = null;
		var hasDealers = true;
		
		if (typeof(request.responseXML) != "undefined") {
			e = request.responseXML.getElementsByTagName("dealer");
		} else if (jQuery(request).length > 0) {
			e = jQuery(request).find("dealer")
		} else {
			hasDealers = false;
		}

		if (hasDealers)
		{
			for(i = 0; i < e.length; i++)
			{
				var hasProgramCode = false;
				if (requestPC != null && requestPC != "" && requestPC != "all") {
					var servicesPG = e[i].getElementsByTagName("services")[0].getElementsByTagName("service");
					for (j = 0; j < servicesPG.length; j++) {
						hasProgramCode = servicesPG[j].attributes[0].value == requestPC;
						if (hasProgramCode) break;
					}
				} else {
					hasProgramCode = true;
				}
				if (hasProgramCode) {
					var d = new Dealer();
					d.populateFromXML( e[i] );
	
					var dlrIsGng = d.goodwrenchAndGo;
	
					// filter out any non-GNG dealers if we're performing
					// a GNG-specific dealer search.
					if (!isGnGSearch || (isGnGSearch && dlrIsGng == "true")){
						setDealerIcon(d, i + 1);
						this.dealerList.push( d );
					}
				}
			}

			if (isDmaPage == true){
				this.sortDealers(this.sortCriteria);
			}

			if(this.dealerList.length == 0){
				this.noResults();
			}else{
				this.setNavigationPagesNumber();
				this.paintPins();
				this.paintMapScroll();
				this.paintListScroll();
				//this.setDealerFound();
			}

			/*
			this.dealerResults();

			if (isDmaPage == true){
				this.centerMap(this.dealerList[0].point, this.defaultZoomLevel);
			}
			else {
				this.centerAndOpenInfo(this.dealerList[0]);
			}
			*/
		}
	},

	reloadMap: function(el) {
		var s = document.location.search;
    	if (s.startsWith("?")) s = s.substr(1);
    	var params = s.toQueryParams();
    	params.rdoOffers = el.value;
    	params.programCode = el.value;
    	selectedSearchType = el.value;

    	this.clearMarkers();
    	this.dealerList = [];
    	this.loadXMLDocWithParameters(params);
    },

    sortDealers: function (criteria){
    	var zoom = this.map.getZoom();
    	if(zoom != this.defaultZoomLevel){
    		this.defaultZoomLevel = zoom;
    	}
    	this.dealerList = this.dealerList.sort(function sortfunction(a, b){
    		var result = 0;
    		if(criteria == "distance"){
    			result = eval(a.distance) - eval(b.distance);
    			if(result < 0){
    				result = -1;
    			}
    			else if(result > 0){
    				result = 1;
    			}
    		}
    		else if(criteria == "asc"){
    			result = (a.name > b.name)? 1: -1;
    		}
    		else{
    			result = (b.name > a.name)? 1: -1;
    		}
    		return result
    	});
    	this.currentPage = 0;
    },

    centerAndOpenInfo: function(dealer){
    	var zoom = this.map.getZoom();
    	if(zoom != this.defaultZoomLevel){
    		this.defaultZoomLevel = zoom;
    	}

    	if(dealer != null){
			dealer.centerOnMap(this, this.defaultZoomLevel);
			dealer.marker.openInfoWindow(dealer.getDealerInfoHtml());
		}
    },

	loadXMLDocWithParameters: function(params) {
		// branch for native XMLHttpRequest object
		this.currentMapPage = 0;
		this.currentPage = 0;

		var myUrl = this.baseUrl
		var a = this;
		new Ajax.Request(
			myUrl,
			{
				method: "get",
				onSuccess: function(request) {
					a.buildDealerList(request, "distance");
				},

				onFailure: function(request) {
	                a.noResults();
				},

				parameters: params
			}
		);
	},

	loadXMLDoc: function() {
		// branch for native XMLHttpRequest object
		var myUrl = "/locatedealer/cntrl" + document.location.search;
		var dealersPhoneNumbersUrl = "/dma/dealers_phoneNumbers.xml";
		var buickDomain = "buick.com";
		var gmcDomain = "gmc.com";
		var referer = document.referrer;
		
		var a = this;
		var dealers = null;
		var dealersPhones = null;
		var dealersUpdated = null;
		
		getFileByAjax(myUrl, function(data){
			dealers = data;
			removeDealersInfoBlanks(dealers);
			dealersPhones = getFileByAjax(dealersPhoneNumbersUrl, function(data) {
				dealersPhones = data;
				dealersUpdated = getUpdatedDealersPhone(dealers, dealersPhones);
			});
		});
		
		if (referer.indexOf(buickDomain) > -1 || buickReferer == "true") {
			dealersPhoneNumbersUrl = "/dma/dealers_buickPhoneNumbers.xml";
			dealersPhones = getFileByAjax(dealersPhoneNumbersUrl, function(data) {
				dealersPhones = data;
				dealersUpdated = getUpdatedDealersPhone(dealersUpdated, dealersPhones);
			});
		}

		if (referer.indexOf(gmcDomain) > -1 || gmcReferer == "true") {
			dealersPhoneNumbersUrl = "/dma/dealers_gmcPhoneNumbers.xml";
			dealersPhones = getFileByAjax(dealersPhoneNumbersUrl, function(data) {
				dealersPhones = data;
				dealersUpdated = getUpdatedDealersPhone(dealersUpdated, dealersPhones);
			});
		}
		a.buildDealerList(dealersUpdated, "distance");
	},

	setLoadFunction: function(cb) {
		GEvent.addListener(this.map, "load", cb);
	},

	clearMarkers: function() {
		this.map.clearOverlays();
	},
	closeInfoWindow: function(){
		this.map.closeInfoWindow();
	},
	refresh: function() {
		if (this.useMarkerManager && this.markerManager != null) {
			this.markerManager.refresh();
		}
	},

	addMarker: function(marker) {
		if (this.useMarkerManager == true)
		{
			if (this.markerManager == null) this.markerManager = new GMarkerManager(this.map);
			this.markerManager.addMarker(marker, 3);
		}
		else
		{
			this.map.addOverlay(marker);
		}
	},

	centerMapOnAddress: function(address, zoomLevel) {
		var gmTempZoomLevel = ( zoomLevel != null ? zoomLevel : this.defaultZoomLevel );
		var tempMapper = this;

		this.geoCoder.getLatLng(
			address,
			function(point) {
				if (!point)
				{
					if (tempMapper.mapWasCentered == false)
					{
						tempMapper.recenterToFirstDealer = true;
					}
				}
				else
				{
				    tempMapper.mapWasCentered = true;
				    tempMapper.centerMap(point, gmTempZoomLevel);
			    }
			}
		);
	},

	centerMap: function(point, zoomLevel) {
		if (point == null && this.defaultPoint != null)
			point = this.defaultPoint;

		if (point != null)
		{
			if (zoomLevel == null)
			{
				zoomLevel = this.defaultZoomLevel;
			}

			this.map.setCenter(point, zoomLevel);
		}
	},

	showTraffic: function() {
		if (!this.trafficAdded)
		{
			this.traffic = new GTrafficOverlay();
			this.map.addOverlay( this.traffic );
			this.trafficAdded = true
		}
		this.traffic.show();
	},

	hideTraffic: function() {
		if (this.trafficAdded) this.traffic.hide();
	},

	mapDealer: function(dealer, center, zoomLevel) {
		if (center == null) center = false;
		if (zoomLevel == null) zoomLevel = this.defaultZoomLevel;

		if (dealer.point != null)
		{
			this.mapPoint(dealer, dealer.point, center,
				dealer.icon, zoomLevel);
		}
		else
		{
			this.mapAddress(dealer, dealer.buildAddress(), center,
							dealer.icon, "<div></div>", zoomLevel );
		}
	},

	mapPoint: function(dealer, point, center, icon, iconInfo, zoomLevel) {
		if (center)
		{
			this.centerMap(point, zoomLevel);
		}
		if (icon == null) icon = this.defaultIcon;
		var marker = new GMarker(point, {icon: icon});
		dealer.marker = marker;

		GEvent.addListener(marker, "click", function() {
		    marker.openInfoWindowHtml(dealer.getDealerInfoHtml());
		   if (isDmaPage == true){
				clickTrack(clickTrakingArray['DMADealerMapPinMap'] , false);
				SpotlightTag('dealerInfo');
			}else{
		    clickTrack(clickTrakingArray['DealerMapPinMap'] , false);
		    }
	  	});

		GEvent.addListener(marker, "infowindowopen", function() {
			if(isInfoMapHide(dealer.markerNumber)){
				hideShowDealerInfo(dealer.markerNumber);
				marker.openInfoWindowHtml(dealer.getDealerInfoHtml());
			}
			dealer.div.addClassName("mapSelected");
		});

		GEvent.addListener(marker, "infowindowclose", function() {
			if(!isInfoMapHide(dealer.markerNumber)){
				hideShowDealerInfo(dealer.markerNumber);
			}
			dealer.div.removeClassName("mapSelected");
		});


		this.addMarker(marker);
	},

	mapAddress: function(dealer, address,center, icon, iconInfo, zoomLevel) {

		var gmTempZoomLevel = ( zoomLevel != null ? zoomLevel : this.defaultZoomLevel );
		var tempMapper = this;
		this.geoCoder.getLatLng(
			address,
			function(point) {
				if (point)
				{
				    tempMapper.mapPoint(dealer, point, center, icon, iconInfo, gmTempZoomLevel);
			    }
			}
		);
	},

	addControls: function() {
		if (this.showZoomControl == true) this.map.addControl( new GLargeMapControl()  );
		if (this.showTypeControl == true) this.map.addControl( new GMapTypeControl()  );
	}
};

function isInfoMapHide(dealerNumber){
	var id = "showHide-" + dealerNumber;
	var div = document.getElementById(id);
	var isHide = div == null || div.style.display == "" || div.style.display != "block";
	return isHide;
}

