// Labels List
var labels = {
	page : translate.get("page")+' ',
	telephone : translate.get("abv_telephone")+':',
	fax : translate.get("abv_fax")+':',
	hours : translate.get("hours")+':',
	links : translate.get("links")+':',
	manager : translate.get("manager")+':',
	dealersNear : translate.get("dealers_near"),
	emailLink : translate.get("link_email"),
	
	directions : translate.get("link_directions"),
	dealerWebsite : translate.get("link_dealer_website"),
	printLabel : translate.get("link_print"),

	errorMessaage1 : translate.get("error_message_zero_results"),
	errorSuggest1 :	translate.get("error_suggest_zero_results"),
	errorLinks1 :	translate.get("error_links_zero_results"),
	
	errorMessaage2 : translate.get("error_message_invalid_request"),
	errorSuggest2 : "",
	errorLinks2 : "",
	
	errorMessaage3 : translate.get("error_message_over_query"),
	errorSuggest3 : "",
	errorLinks3 : "",
	
	errorMessaage4 : translate.get("error_message_request_denied"),
	errorSuggest4 : "",
	errorLinks4 : "",
	
	errorMessaage5 : translate.get("error_message_unknown"),
	errorSuggest5 : "",
	errorLinks5 : "",
	
	errorMessageOutsideMarket : translate.get("error_message_outside_market"),
	errorMessageMultipleLocations : translate.get("error_message_multiple_locations "),
	errorSuggestDidYouMean : translate.get("error_suggest_did_you_mean"),
	errorMessageOutsideMarketContinue : translate.get("error_suggest_outside_market_continue"),
	errorNewSearch : translate.get("error_new_search")
};

var intLoc = {
	map : null,
	markers : [],
	geocoder : null,
	visibleInfoWindow : null,
	dealerData : null,
	bubbleData : null,
	dealerLinkInfo : null,
	infoWindowContent : null,
	curMarkerID : null,
	curDealer : null,
	labelDiv : null,
	openLabel : null,
	markerInPixels : [],
	locality : null,
	listHeadAddress : null,
	infoWindowTabNames : [],
	country : null,
	locationType : null,
	countryInMarket : iMarket.market.countryInMarket,
	atlat : null,
	atlng : null,
	showResults : null,

	mapInit : function(mlat,mlng,zoom_level) {
		intLoc.geocoder = new google.maps.Geocoder();
		var zoomLevel = parseInt(zoom_level);
    var latlng = new google.maps.LatLng(mlat, mlng);
    var myOptions = {
      zoom: zoomLevel,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
			//disableDefaultUI: true
			/*navigationControlOptions: {  
      	style: google.maps.NavigationControlStyle.SMALL  
			}*/
    };
    intLoc.map = new google.maps.Map(document.getElementById("map"), myOptions);
  },
	
	convertObject : function(array) {
		var object = {};
		for(var i=0;i<array.length;i++){
			object[array[i]]='';
		}
		return object;
	},
	
	closeErrorWin : function() {
		jQuery("#errorBox").css("display","none");
		jQuery("#errorDark").css("display","none");
		
	},
	
	searchNewAddress : function(location) {
		intLoc.closeErrorWin();
		intLoc.codeAddress(location);
	},
	
	codeAddress : function(newLocation) {
		if(intLoc.visibleInfoWindow) {
			intLoc.visibleInfoWindow.close();
			//jQuery("#rightColumn div:last").parent().parent().fadeIn();
			intLoc.visibleInfoWindow = null;
		}

		if(newLocation){
    	var geoAddress = newLocation;
			intLoc.showResults = false;
			} else {
			var geoAddress = document.getElementById("address").value;
			intLoc.showResults = true;
		}
		
    if (intLoc.geocoder) {
      intLoc.geocoder.geocode( { 'address': geoAddress, 'language': iMarket.market.language, 'region': iMarket.market.country }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
					var latSvr = results[0].geometry.location.lat();
					var lngSvr = results[0].geometry.location.lng();
					var local = encodeURIComponent( results[0].formatted_address );
					intLoc.atlat = latSvr;
					intLoc.atlng = lngSvr;
					addressComponentsLength = results[0].address_components.length;
					intLoc.locality = local;
					intLoc.listHeadAddress = results[0].formatted_address;
					
					for(r=0; r < addressComponentsLength; r++) {
						for(t=0; t < results[0].address_components[r].types.length; t++) {
							if(results[0].address_components[r].types[t] == "country") {
								intLoc.country = results[0].address_components[r].short_name;
							}
						}
					}
					//alert("country =" +intLoc.country);
					
					if(results.length > 1 && intLoc.showResults == true){
						var didYouMean = "";
						for (j=0; j < results.length; j++) {
							addressClean = results[j].formatted_address.replace(/'/,"");
							didYouMean += '<li><a href="javascript:intLoc.searchNewAddress(\''+addressClean+'\');">'+results[j].formatted_address+'</a></li><br />';
						}
						jQuery("#errorBox").css("display","block");
						jQuery("#errorDark").css("display","block");
						jQuery("#continueButton").css("display","none");
						jQuery("#errorMessage").html('');
						jQuery("#errorSuggest").html('');
						jQuery("#errorLinksWrap ul").html('');
						jQuery("#errorMessage").html(labels.errorMessageMultipleLocations);
						jQuery("#errorSuggest").html(labels.errorSuggestDidYouMean);
						jQuery("#errorLinksWrap ul").html(didYouMean);
						jQuery("#errorButton").html('<a class="searchButton" href="/hostb/intl/locator/'+iMarket.market.country+'/'+iMarket.market.language+'/map" onclick="intLoc.closeErrorWin(); intLoc.tracking(\'New Search\', \'Error Page\');">'+labels.errorNewSearch+'</a>');
					
					}	if( intLoc.country in intLoc.convertObject(intLoc.countryInMarket) ) { 
						//alert(intLoc.country+", "+intLoc.countryInMarket+", YES");
					} else {
						//alert(intLoc.country+", "+intLoc.countryInMarket+", NO");
						if(results.length == 1 && intLoc.showResults == true) {
							jQuery(document).ready(function(){
								jQuery("#errorBox").css("display","block");
								jQuery("#errorDark").css("display","block");
								jQuery("#continueButton").css("display","block");
								jQuery("#errorMessage").html(labels.errorMessageOutsideMarket);
								jQuery("#errorSuggest").html('');
								jQuery("#errorLinksWrap ul").html('');
								jQuery("#continueButton").html('<a class="searchButton" href="javascript:void(0)" name="&lid=Continue&lpos=Error Page" onclick="intLoc.closeErrorWin(); intLoc.tracking(\'Continue\', \'Error Page\');">'+labels.errorMessageOutsideMarketContinue+'</a>');
								jQuery("#errorButton").html('<a class="searchButton" href="/hostb/intl/locator/'+iMarket.market.country+'/'+iMarket.market.language+'/map" onclick="intLoc.closeErrorWin(); intLoc.tracking(\'New Search\', \'Error Page\');">'+labels.errorNewSearch+'</a>');
							});
						}
					}
					
					var filters = document.getElementsByName("filter");
		      var filterparam = ""
    		  for (i=0; i < filters.length; i++) {
            if (filters[i].checked) {
            	filterparam += "&filter=" + filters[i].value;
            }
      		}
					
 		      intLoc.submitDealer(latSvr, lngSvr, filterparam);
					//alert(intLoc.country);
					
      } else {
					jQuery(document).ready(function(){														
						jQuery("#errorBox").css("display","block");
						jQuery("#errorDark").css("display","block");
						jQuery("#continueButton").css("display","none");
						jQuery("#errorMessage").html('');
						jQuery("#errorSuggest").html('');
						jQuery("#errorLinksWrap ul").html('');
						
						if(status == "ZERO_RESULTS"){
							var num = "1";
						}
						if(status == "INVALID_REQUEST"){
							var num = "2";
						}
						if(status == "OVER_QUERY_LIMIT"){
							var num = "3";
						}
						if(status == "REQUEST_DENIED"){
							var num = "4";
						}
						if(status == "UNKNOWN_ERROR" || status == "ERROR"){
							var num = "5";
						}

						var message = eval("labels.errorMessaage" + num);
						var suggest = eval("labels.errorSuggest" + num);
						var errorLinks = eval("labels.errorLinks" + num);

						if(num == "1" || num == "3"){
							message = message+" "+geoAddress;
						}
						jQuery("#errorMessage").html(message);
						jQuery("#errorSuggest").html(suggest);
						jQuery("#errorLinksWrap ul").html(errorLinks);
						jQuery("#errorButton").html('<a class="searchButton" href="/hostb/intl/locator/'+iMarket.market.country+'/'+iMarket.market.language+'/map" onclick="intLoc.closeErrorWin(); intLoc.tracking(\'New Search\', \'Error Page\');">'+labels.errorNewSearch+'</a>');
					});															
        }
      });
    }
  },
	
	submitDealer : function(latSvr, lngSvr, filters) {
     jQuery(document).ready(function(){
      jQuery("head").append('<scr'+'ipt type="text/javascript" src="/hostb/intl/locator/service/'+iMarket.market.country+'/'+iMarket.market.language+'/dealerlist.json?callback=dealerInfo.dealerList&lat='+latSvr+'&lon='+lngSvr+filters+'"></sc'+'ript>');
    });
  },

	generateTriggerCallback: function(object, eventType, lid, lpos) {
    return function() {
      google.maps.event.trigger(object, eventType);
			if(lid){intLoc.tracking(lid, lpos);}
    };
  },
	
	tracking : function(lid, lpos) {
		flashLinkTracking('', '', lid, lpos, 1);
	},
	
	loadServiceData : function(markerID) {
		loaded = intLoc.dealerData.dealers[markerID].services.loaded;
		if(loaded == "false"){
		jQuery(document).ready(function(){																						
			jQuery("#serviceDataHolder").html('<scr'+'ipt type="text/javascript" src="/hostb/intl/locator/service/'+iMarket.market.country+'/'+iMarket.market.language+'/dealerservices.json?callback=dealerInfo.dealerWindowData&dealerId='+intLoc.dealerData.dealers[markerID].id+'"></sc'+'ript>');
		});
		// update current service data with hours info from the server
		intLoc.dealerData.dealers[markerID].services = intLoc.bubbleData.services;
		}
	},
	
	setMarkers : function(map, locations, start, end) {
		var t = start;
		intLoc.markerInPixels.length > 2 ? intLoc.markerInPixels = [] : ""; 
		intLoc.markers.length > 0 ? intLoc.clearMarkers() : "";
		var image = new google.maps.MarkerImage("/apps/locator/img/marker.gif", new google.maps.Size(83, 53), new google.maps.Point(0,0), new google.maps.Point(26, 53));
		var shape = {
      coord: [1, 1, 1, 53, 83, 53, 83 , 1],
      type: 'poly'
  	};
		var bounds = new google.maps.LatLngBounds();
		for (t; t < end; t++) {
			var dmark = locations[t];
			var dealerID = dmark[3];
			var dealerLabelName = dmark[0];
    	var myLatLng = new google.maps.LatLng(dmark[1], dmark[2]);
			var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        icon: image,
        shape: shape,
        //title: dmark[0],
				dealer: dmark[0],
				id: t
    	});
			
			if (t==start){
				var atLatLng = new google.maps.LatLng(intLoc.atlat, intLoc.atlng);
				var atMarker = new google.maps.Marker({
        position: atLatLng,
        map: map
    	});
				intLoc.markers.push(atMarker);
				bounds.extend(atLatLng);
				map.fitBounds(bounds);
			}
			
			intLoc.markers.push(marker);
			newDeal ='dealer'+(t+1);
			bounds.extend(myLatLng);
    	map.fitBounds(bounds);

			// Add marker click event listener
      google.maps.event.addListener(marker, 'click', intLoc.openInfoWindow(marker));
			// Add dealer list onclick event
      document.getElementById(''+newDeal+'').onclick = intLoc.generateTriggerCallback(marker, 'click', 'dealerName+'+marker.dealer, 'dealer+list');

			label = new Label({
				map: map,
				labelId: t+1,
				labelName: dealerLabelName
     });

     	label.bindTo('position', marker, 'position');
     	label.bindTo('text', marker, 'position');	
		 
			google.maps.event.addListener(marker, 'mouseover', intLoc.openLabel(marker));
			google.maps.event.addListener(marker, 'mouseout', intLoc.closeLabel(marker));
			
    }
	},

	openLabel : function(marker) {
		return function() {
			var labelNum = marker.id + 1;
			jQuery(document).ready(function(){
					jQuery("#map-tooltip1").parent().css("z-index","200");
					jQuery("#map-tooltip"+labelNum).css("display", "block");
			});
		}
  },
	
	closeLabel : function(marker) {
		return function() {
			var labelNum = marker.id + 1;
			jQuery(document).ready(function(){
					jQuery("#map-tooltip"+labelNum).css("display", "none");
			});
		}
		
  },
	
	openInfoWindow: function(marker) {
			// Create marker info window.
			var infoWindow = new google.maps.InfoWindow({
				content: [intLoc.infoWindowContent].join('')
			});
			
			return function() {
				intLoc.tracking('dealerName+'+marker.dealer, 'marker');
				jQuery(document).ready(function(){
				var dealerListDiv ='#dealer'+(marker.id+1);
				// Close the last selected marker before opening this one.
				if ((intLoc.visibleInfoWindow) && (marker.id == intLoc.curMarkerID)) {
					intLoc.visibleInfoWindow.close();
					//jQuery("#rightColumn div:last").parent().parent().fadeIn();
					intLoc.visibleInfoWindow = null;
					intLoc.curMarkerID = marker.id;
					jQuery(''+dealerListDiv+'').removeClass("on");
					intLoc.curDealer = dealerListDiv;
				} else {
					if (intLoc.visibleInfoWindow) {
					intLoc.visibleInfoWindow.close();
					document.getElementById('dealerSubmit').onclick = intLoc.generateTriggerCallback(marker, 'click');
					document.getElementById('paginate').onclick = intLoc.generateTriggerCallback(marker, 'click');
					}
					
					jQuery(''+intLoc.curDealer+'').removeClass("on");
					jQuery(''+dealerListDiv+'').addClass("on");
					intLoc.curDealer = dealerListDiv;
					//jQuery("#rightColumn div:last").parent().parent().fadeOut();
					intLoc.loadServiceData(marker.id);
					var loaded = intLoc.dealerData.dealers[marker.id].services.loaded;
					var numServices = intLoc.dealerData.dealers[marker.id].services.service.length;
					var numDealerLinks = intLoc.dealerData.dealers[marker.id].services.dealerLinks.length;
					var listID = intLoc.dealerData.dealers[marker.id].id ? 										intLoc.dealerData.dealers[marker.id].id : "";
					var name = intLoc.dealerData.dealers[marker.id].dealer_name ? 						'<strong>' + intLoc.dealerData.dealers[marker.id].dealer_name + '</strong>' + '<br />' : "";
					var address1 = intLoc.dealerData.dealers[marker.id].street_address1 ?			intLoc.dealerData.dealers[marker.id].street_address1 + '<br />' : "";
					var address2 = intLoc.dealerData.dealers[marker.id].street_address2 ?			intLoc.dealerData.dealers[marker.id].street_address2 + '<br />' : "";
					var postal = intLoc.dealerData.dealers[marker.id].postal ? 								intLoc.dealerData.dealers[marker.id].postal + ' ' : "";
					var city = intLoc.dealerData.dealers[marker.id].city ? 										intLoc.dealerData.dealers[marker.id].city + ' ' : "";
					var state = intLoc.dealerData.dealers[marker.id].state ? 									intLoc.dealerData.dealers[marker.id].state + ' ' : "";
					var country = intLoc.dealerData.dealers[marker.id].country ? 							intLoc.dealerData.dealers[marker.id].country + '<br />' : "";
					var phone = intLoc.dealerData.dealers[marker.id].phone ? 									labels.telephone + '  ' + intLoc.dealerData.dealers[marker.id].phone + '<br />' : "";
					var fax = intLoc.dealerData.dealers[marker.id].fax ? 											labels.fax + '  ' + intLoc.dealerData.dealers[marker.id].fax + '<br />' : "";
					var directions = intLoc.dealerData.dealers[marker.id].directions ? 				'&nbsp;<a href=\"' + intLoc.dealerData.dealers[marker.id].directions + '\">' + labels.directions+'</a>' + '<br />' : "";					
					
					dealerLinkInfo = "";
					var directionLinkFrom = "&saddr=";
					
					for(var j=0;j<numDealerLinks;j++){
						var dealerInfoLinks = intLoc.dealerData.dealers[marker.id].services.dealerLinks[j].link;
						if(dealerInfoLinks.indexOf(directionLinkFrom) != -1){dealerInfoLinks = dealerInfoLinks+intLoc.locality};
						
						popup = intLoc.dealerData.dealers[marker.id].services.dealerLinks[j].popup == 'true' ? 'target=\"_blank\"' : "";
						dealerLinkInfo += intLoc.dealerData.dealers[marker.id].services.dealerLinks[j].name ? '<a href="'+dealerInfoLinks+'" onclick="intLoc.tracking(\''+intLoc.dealerData.dealers[marker.id].services.dealerLinks[j].name+'\', \'info+window+dealer+links\');" '+popup+'>'+intLoc.dealerData.dealers[marker.id].services.dealerLinks[j].name+'</a><br />' : "";
					}
					
					
					var tabs = "";
					for(var s=0; s<numServices;s++){
						var tab = intLoc.dealerData.dealers[marker.id].services.service[s].tab ? 	intLoc.dealerData.dealers[marker.id].services.service[s].tab : "";
						var tabName = translate.get(tab);
						intLoc.infoWindowTabNames.push(tabName);
						tabs += '<li id="serviceTab'+s+'">'+tabName+'</li>';
					}
					
					intLoc.infoWindowContent = '<div id="dealerBubble"><div id="bubbleLeft"> \
					<div id="dealerBubbleInfo"> \
						<div class="boldText">'+name+'</div> \
						'+address1+address2+postal+city+state+'<br />'+phone+fax+' \
					</div> \
					<div id="leftBubbleLinks"> \
						'+dealerLinkInfo+' \
					</div> \
				</div> \
				<div id="bubbleRight"> \
					<div id="dealerBubbleTabs"> \
						<ul class="menu"> \
							'+tabs+' \
						</ul> \
					</div> \
					<div id="bubbleContentWrapper"> \
						<div id="bubbleClose"><a href="javascript:void(0)"><img src="/apps/locator/img/btn_closewindow.gif" alt="Close Information Window" title="" /></a></div>'
						
						for(var k=0; k<numServices;k++){ 
							var numServiceLinks = intLoc.dealerData.dealers[marker.id].services.serviceLinks.length;
							var numDealerHours = intLoc.dealerData.dealers[marker.id].services.service[k].hours.length;
							
							var manager_name = intLoc.dealerData.dealers[marker.id].services.service[k].manager.name ? 						labels.manager+'  '+ intLoc.dealerData.dealers[marker.id].services.service[k].manager.name + '<br />' : "";
							var manager_email = intLoc.dealerData.dealers[marker.id].services.service[k].manager.email ? 					'<a href="mailto:' + intLoc.dealerData.dealers[marker.id].services.service[k].manager.email + '">'+labels.emailLink+'</a><br />' : "";
							var manager_number = intLoc.dealerData.dealers[marker.id].services.service[k].manager.number ? 				labels.telephone+'  '+ intLoc.dealerData.dealers[marker.id].services.service[k].manager.number + '<br />' : "";
							var dealerHours = "";
							var serviceLinks = "";
							
							var hoursLabel = intLoc.dealerData.dealers[marker.id].services.service[k].hours[0] ? labels.hours : "";
							var linksLabel = intLoc.dealerData.dealers[marker.id].services.serviceLinks[0] ? labels.links : "";
							
							numDealerHours > 0 ? dealerHours += '<div class="hours">' : "";
							for(var m=0;m<numDealerHours;m++) {
								dealerHours += intLoc.dealerData.dealers[marker.id].services.service[k].hours[m].day +': '+intLoc.dealerData.dealers[marker.id].services.service[k].hours[m].time+'<br />'
							}
							numDealerHours > 0 ? dealerHours += '</div>' : "";

							for(n=0;n<numServiceLinks;n++){
								var servicePopup = intLoc.dealerData.dealers[marker.id].services.serviceLinks[n].popup == 'true' ? 'target=\"_blank\"' : "";
								serviceLinks += intLoc.dealerData.dealers[marker.id].services.serviceLinks[n].name ? '<span><a href="'+intLoc.dealerData.dealers[marker.id].services.serviceLinks[n].link+'" onclick="intLoc.tracking(\''+intLoc.dealerData.dealers[marker.id].services.serviceLinks[n].name+'\', \'info+window+service+links\');" '+servicePopup+'>'+intLoc.dealerData.dealers[marker.id].services.serviceLinks[n].name+'</a></span>' : "";}
							intLoc.infoWindowContent +='<div id="serviceContent'+k+'" class="bubbleContent"> \
								<div class="bubbleHours"> \
									<span class="boldText">'+hoursLabel+'</span> \
									<div class="hoursContent"> \
											'+dealerHours+' \
										<div class="manager"> \
											'+manager_name+manager_email+manager_number+' \
										</div> \
									</div> \
								</div> \
								<div class="rightBubbleLinks"> \
									<div class="boldText">'+linksLabel+'</div> \
									'+serviceLinks+' \
								</div> \
							</div>'
							}
						intLoc.infoWindowContent +='</div> \
					</div>';
					
					// Create marker info window.
					var infoWindow = new google.maps.InfoWindow({																			
						content: [intLoc.infoWindowContent].join(''),
						//size: new google.maps.Size(581, 400),
						//maxWidth: [535],
						//pixelOffset: (50, 30),
						disableAutoPan: [true]
						//position: [myLatLng]
					});
					
					infoWindow.open(intLoc.map, marker);
					intLoc.visibleInfoWindow = infoWindow;
					intLoc.curMarkerID = marker.id;
					intLoc.contentDivManipulate();
					document.getElementById('bubbleClose').onclick = intLoc.generateTriggerCallback(marker, 'click', 'info+window+close', 'info+window');
					
					
					if(marker.id == 0 || marker.id == 3 || marker.id == 6 || marker.id == 9 || marker.id == 12){
						panLocation = 0;
					}
					if(marker.id == 1 || marker.id == 4 || marker.id == 7 || marker.id == 10 || marker.id == 13){
						panLocation = 1;
					}
					if(marker.id == 2 || marker.id == 5 || marker.id == 8 || marker.id == 11 || marker.id == 14){
						panLocation = 2;
					}
					
					intLoc.map.panTo(intLoc.markerInPixels[panLocation]);

				}
			});
    };
		//jQuery("#map-tooltip"+marker.id).fadeIn();
  },
	
	contentDivManipulate : function() {
		jQuery(document).ready(function(){
			jQuery("#dealerBubble").parent().css("position","absolute").css("overflow","visible").width(417).height(128);															
			jQuery(".gmnoprint div").css("visibility", "hidden");															
			jQuery(".gmnoprint img").css("visibility", "hidden");
			jQuery("#dealerBubble").parent().css("left","-98px");
			jQuery("#serviceContent0").css("display", "block");
			jQuery("#serviceContent1").css("display", "none");
			jQuery("#serviceContent2").css("display", "none");
			jQuery(".gmnoprint div:last").css("visibility","visible");
			jQuery("#serviceTab0").addClass("active");
			//jQuery("#dealerBubble").parent().css("border","1px solid #000");
			
			jQuery(".menu > li").click(function(e){	
				switch(e.target.id){  
					case "serviceTab0":  
						//change status & style menu 
						jQuery("#serviceTab2").removeClass("active");  
						jQuery("#serviceTab1").removeClass("active");
						jQuery("#serviceTab0").addClass("active");
						//display selected div, hide others  
						jQuery("#serviceContent0").fadeIn();  
						jQuery("#serviceContent1").css("display", "none");
						jQuery("#serviceContent2").css("display", "none");
						intLoc.tracking(intLoc.infoWindowTabNames[0], 'info+window+tabs');
					break;
					case "serviceTab1":  
						//change status & style menu  
						jQuery("#serviceTab2").removeClass("active");  
						jQuery("#serviceTab0").removeClass("active");
						jQuery("#serviceTab1").addClass("active");
						//display selected division, hide others  
						jQuery("#serviceContent1").fadeIn();  
						jQuery("#serviceContent2").css("display", "none");
						jQuery("#serviceContent0").css("display", "none");  
						intLoc.tracking(intLoc.infoWindowTabNames[1], 'info+window+tabs');
					break;
					case "serviceTab2":  
						//change status & style menu 
						jQuery("#serviceTab0").removeClass("active");
						jQuery("#serviceTab1").removeClass("active");
						jQuery("#serviceTab2").addClass("active");
						//display selected division, hide others
						jQuery("#serviceContent2").fadeIn();
						jQuery("#serviceContent0").css("display", "none");
						jQuery("#serviceContent1").css("display", "none");
						intLoc.tracking(intLoc.infoWindowTabNames[2], 'info+window+tabs');
					break;
				} 
				
				return false;  
			});
		});
	},
	
	clearMarkers : function(){
		for(var i=0; i<intLoc.markers.length; i++){
			intLoc.markers[i].setMap(null);
		}
		intLoc.markers.length = 0; 
	}

};

// Dealer List Build
var dealerInfo = {
dealerList : function(data) {
	intLoc.dealerData = data;
	numDealers = intLoc.dealerData.dealers.length;
	dealerInfo.paginate();
	var odd = true;
	dealerLocations = [];
	jQuery(document).ready(function(){
		jQuery("#listHead").html(numDealers + ' ' + iMarket.market.brandName + ' ' + labels.dealersNear + ' ' + intLoc.listHeadAddress);
		jQuery("#listHead").show();
		jQuery("#dealerList").html('');

		for(var i=0; i<intLoc.dealerData.dealers.length;i++){
			var listID = intLoc.dealerData.dealers[i].id ? 										intLoc.dealerData.dealers[i].id : "";
			var name = intLoc.dealerData.dealers[i].dealer_name ? 						'<a href=\"javascript:void(0)\"><strong>' + intLoc.dealerData.dealers[i].dealer_name + '</strong></a>' + '<br />' : "";
			var address1 = intLoc.dealerData.dealers[i].street_address1 ?			intLoc.dealerData.dealers[i].street_address1 + '<br />' : "";
			var address2 = intLoc.dealerData.dealers[i].street_address2 ?			intLoc.dealerData.dealers[i].street_address2 + '<br />' : "";
			var postal = intLoc.dealerData.dealers[i].postal ? 								intLoc.dealerData.dealers[i].postal + ' ' : "";
			var city = intLoc.dealerData.dealers[i].city ? 										intLoc.dealerData.dealers[i].city + ' ' : "";
			var state = intLoc.dealerData.dealers[i].state ? 									intLoc.dealerData.dealers[i].state + '<br />' : "";
			var country = intLoc.dealerData.dealers[i].country ? 							intLoc.dealerData.dealers[i].country + '<br />' : "";
			var phone = intLoc.dealerData.dealers[i].phone ? 									labels.telephone + '  ' + intLoc.dealerData.dealers[i].phone + '<br />' : "";
			var fax = intLoc.dealerData.dealers[i].fax ? 											labels.fax + '  ' + intLoc.dealerData.dealers[i].fax + '<br />' : "";
			var distance = intLoc.dealerData.dealers[i].distance ? 						intLoc.dealerData.dealers[i].distance : "";
			var directions = intLoc.dealerData.dealers[i].directions ? 				'&nbsp;<a href=\"' + intLoc.dealerData.dealers[i].directions + intLoc.locality +'\" target="_blank">'+labels.directions+'</a>' + '<br />' : "";
			var region = intLoc.dealerData.dealers[i].region ? 								intLoc.dealerData.dealers[i].region + '<br />' : "";
			var country = intLoc.dealerData.dealers[i].country_code ? 				intLoc.dealerData.dealers[i].country_code + '<br />' : "";
			var lang = intLoc.dealerData.dealers[i].lang ? 										intLoc.dealerData.dealers[i].lang + '<br />' : "";
			
			dlat = intLoc.dealerData.dealers[i].lat;
			dlon = intLoc.dealerData.dealers[i].lon;
			
			var numBrands = intLoc.dealerData.dealers[i].brands.length;
			var numIcons = intLoc.dealerData.dealers[i].services.service.length;
			
			
			brandLogos = "";
			serviceIcons = "";
			// Build brand logos
			for(var m=0;m<numBrands;m++) {brandLogos += '<img src="/apps/locator/img/results_logo_' + intLoc.dealerData.dealers[i].brands[m].value +'.gif" alt="Brand Logo" title="" />';}
			// Build Service Icons
			for(var n=0;n<numIcons;n++) {serviceIcons += '<img src="' + intLoc.dealerData.dealers[i].services.service[n].icon + '" alt="Brand Logo" title="' + translate.get(intLoc.dealerData.dealers[i].services.service[n].tab) + '" />';}
			
			var j = i+1;
			if(odd == true) { row = '<div id="dealer'+j+'" class="dealerOdd">'; odd = false; } 
				else { row = '<div id="dealer'+j+'" class="dealerEven">'; odd = true; }
				
			jQuery("#dealerList").append(
				row + ' \
					<div class="dealerNumber">'+j+'</div> \
					<div class="dealerInfo">'+ name + address1 + address2 + postal + city + state + '<br />' + phone + distance + directions + '</div> \
						<div class="brandServices"> \
						<div class="dealerBrandsLogos">'+brandLogos+'</div> \
						<div class="dealerServiceLogos">'+serviceIcons+'</div> \
					</div> \
				</div>');
			dealerLocations[i] = [intLoc.dealerData.dealers[i].dealer_name, dlat, dlon, listID];
		}
		intLoc.setMarkers(intLoc.map, dealerLocations, 0, 3);
	});
},

showDealers : function(page, pageNum) {
	flashLinkTracking('', '', 'page+'+pageNum, 'dealer+pagination', 1); 
	intLoc.markerInPixels.length > 2 ? intLoc.markerInPixels.length = 0 : "";
	Label.prototype.onRemove();
	var endPage = page + 3;
	var arrayNum = page - 1;
	var arrayEnd = arrayNum + 3;
	if(page) {
		jQuery(document).ready(function(){
			for(var i=0;i<=numDealers;i++){jQuery("#dealer"+i).hide();}
			for(j=page;j<endPage;j++){jQuery("#dealer"+j).slideDown(1000);}
			for(k=1;k<=numPages;k++){jQuery("#p"+k).removeClass("on");}
			jQuery("#p"+pageNum).addClass("on");
			
			if (intLoc.visibleInfoWindow) {
					intLoc.visibleInfoWindow.close();
					//jQuery("#rightColumn div:last").parent().parent().fadeIn();
					intLoc.visibleInfoWindow = null;
					jQuery(intLoc.curDealer).removeClass("on");
			}
		});
	}	
	intLoc.setMarkers(intLoc.map, dealerLocations, arrayNum, arrayEnd);
},

paginate : function() {
	var pageLabel = labels.page;
	numPages = parseInt(numDealers / 3);
	var extraPage = numDealers % 3;
	if(extraPage != 0){numPages++};
	jQuery(document).ready(function(){
		if(numDealers >= 3) {
			jQuery("#paginate").html(pageLabel);
			for(var i=1;i<=numPages;i++){
				if(i==1){
					j=1;
					} else {
					j = j + 3;
				}
				jQuery("#paginate").append('<a id="p'+i+'" href="javascript:dealerInfo.showDealers('+j+','+i+');">'+i+'</a>');
			}
			jQuery("#p1").addClass("on");
			jQuery("#paginate").show();
		} else {
			jQuery("#paginate").hide();
		}
	});
},

closeInfo : function() {
	jQuery(document).ready(function(){
		jQuery("#dealerBubble").fadeOut();
	});
},

dealerWindowData : function(windowData) {
	intLoc.bubbleData = windowData;
}

};