var geocoder; var markers = null; var currinfowindow = null; var currpartsoverlay = null; var currclustericon = null; var currzoom = null; var map = null; var markerClusterer = null; var markerClustererOptions = null; var storesCircle = null; var directionsDisplay = null; var blueIcon = new google.maps.MarkerImage( '/includes/js/images/map/pinBlue.gif', new google.maps.Size(26, 34), new google.maps.Point(0, 0), new google.maps.Point(12, 34) ); var blueStarIcon = new google.maps.MarkerImage( '/includes/js/images/map/pinBlueStar.gif', new google.maps.Size(27, 34), new google.maps.Point(0, 0), new google.maps.Point(12, 34) ); var tHover = null; var tMarker = null; var tDartHover = null; var tDartMarker = null; function map_init() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(36.0000, -95.0000); var mapTypeIds = [ google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN ]; var mapTypeOptions = { mapTypeIds: mapTypeIds, position: google.maps.ControlPosition.TOP_RIGHT, style: google.maps.MapTypeControlStyle.DEFAULT /* HORIZONTAL_BAR | DROPDOWN_MENU | DEFAULT */ }; var panOptions = { position: google.maps.ControlPosition.RIGHT_TOP }; var zoomOptions = { position: google.maps.ControlPosition.RIGHT_TOP, style: google.maps.ZoomControlStyle.DEFAULT /* SMALL | LARGE | DEFAULT */ }; var scaleOptions = { position: google.maps.ControlPosition.BOTTOM_LEFT, style: google.maps.ScaleControlStyle.DEFAULT /* DEFAULT */ }; var streetViewOptions = { position: google.maps.ControlPosition.RIGHT_TOP }; var overviewMapOptions = { opened: false }; var mapOptions = { zoom: 4, minZoom: 1, maxZoom: 18, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP, mapTypeControlOptions: mapTypeOptions, panControl: true, panControlOptions: panOptions, zoomControl: true, zoomControlOptions: zoomOptions, scaleControl: true, scaleControlOptions: scaleOptions, streetViewControl: false, streetViewControlOptions: streetViewOptions, overviewMapControl: false, overviewMapControlOptions: overviewMapOptions, disableDefaultUI: false }; map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); var mcStyles = [{ url: '/includes/js/images/map/pinCluster.gif', height: 36, width: 36, opt_anchor: [32, 0], opt_textColor: '#FFFFFF', opt_textSize: 10 }]; markerClustererOptions = { gridSize: 40, minimumClusterSize: 2, zoomOnClick: true, averageCenter: false, styles: mcStyles }; registerMapEvents(); } function loadMarkers() { var url = 'http://local.acdelco.com/includes/services/byDMA.cfm?type=&dma=&zip='; var markerBounds = new google.maps.LatLngBounds(); downloadUrl(url, function(data) { var markerdata = data.documentElement.getElementsByTagName("marker"); if (markerdata.length == 0) { return; } markers = []; for (var i = 0; i < markerdata.length; i++) { var id = markerdata[i].getAttribute("id"); var itemnum = i + 1; var markerLabel = itemnum.toString(); var lat = parseFloat(markerdata[i].getAttribute("lat")); var lng = parseFloat(markerdata[i].getAttribute("lng")); var accountNo = getChildNodeData(markerdata[i].getElementsByTagName("accountNo")[0]); var businessName = getChildNodeData(markerdata[i].getElementsByTagName("businessName")[0]); var address = getChildNodeData(markerdata[i].getElementsByTagName("address")[0]); var city = getChildNodeData(markerdata[i].getElementsByTagName("city")[0]); var state = getChildNodeData(markerdata[i].getElementsByTagName("state")[0]); var postalCode = getChildNodeData(markerdata[i].getElementsByTagName("postalCode")[0]); var fullAddress = address + ' ' + city + ', ' + state + ' ' + postalCode; var phone = getChildNodeData(markerdata[i].getElementsByTagName("phone")[0]); var fax = getChildNodeData(markerdata[i].getElementsByTagName("fax")[0]); var email = getChildNodeData(markerdata[i].getElementsByTagName("email")[0]); var sundayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("sundayHours")[0])); var mondayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("mondayHours")[0])); var tuesdayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("tuesdayHours")[0])); var wednesdayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("wednesdayHours")[0])); var thursdayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("thursdayHours")[0])); var fridayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("fridayHours")[0])); var saturdayHours = parseHours(getChildNodeData(markerdata[i].getElementsByTagName("saturdayHours")[0])); var storeHours = [sundayHours,mondayHours,tuesdayHours,wednesdayHours,thursdayHours,fridayHours,saturdayHours]; var productLines = markerdata[i].getElementsByTagName("productLines")[0].childNodes; var products = []; var product; for (j=0; j < productLines.length; j++) { if (productLines.item(j).nodeType == 1) { var node = productLines.item(j); if (node.getAttribute("published") == '1' && getChildNodeData(node) == '1') { product = { lineNumber: node.getAttribute("lineNumber"), name: node.getAttribute("name"), link: node.getAttribute("link") }; products.push(product); } } } var servicesOffered = markerdata[i].getElementsByTagName("services")[0].childNodes; var services = []; var service; for (j=0; j < servicesOffered.length; j++) { if (servicesOffered.item(j).nodeType == 1) { var node = servicesOffered.item(j); if (getChildNodeData(node) == '1') { service = { name: node.getAttribute("name") }; services.push(service); } } } var retail = getChildNodeData(markerdata[i].getElementsByTagName("retail")[0]); var repair = getChildNodeData(markerdata[i].getElementsByTagName("repair")[0]); var isc = getChildNodeData(markerdata[i].getElementsByTagName("isc")[0]); var bsc = getChildNodeData(markerdata[i].getElementsByTagName("bsc")[0]); var kfi = getChildNodeData(markerdata[i].getElementsByTagName("kfi")[0]); var keywords = getChildNodeData(markerdata[i].getElementsByTagName("keywords")[0]); var espanol = getChildNodeData(markerdata[i].getElementsByTagName("espanol")[0]); var mechanicnetUrl = getChildNodeData(markerdata[i].getElementsByTagName("mechanicnetUrl")[0]); var countryRegion = getChildNodeData(markerdata[i].getElementsByTagName("countryRegion")[0]); var tradeOnly = getChildNodeData(markerdata[i].getElementsByTagName("tradeOnly")[0]); var tssLevel = getChildNodeData(markerdata[i].getElementsByTagName("tssLevel")[0]); var distance = getChildNodeData(markerdata[i].getElementsByTagName("distance")[0]); var latlng = new google.maps.LatLng(lat, lng); var store = { itemNum: itemnum, markerLabel: markerLabel, latlng: latlng, accountNo: accountNo, name: businessName, address: address, city: city, state: state, postalCode: postalCode, fullAddress: fullAddress, phone: phone, fax: fax, email: email, website: mechanicnetUrl, storeHours: storeHours, productLines: products, services: services, retail: retail, repair: repair, isc: isc, bsc: bsc, kfi: kfi, keywords: keywords, espanol: espanol, countryRegion: countryRegion, tradeOnly: tradeOnly, tssLevel: tssLevel }; var marker = createMarker(store); markers.push(marker); markerBounds.extend(marker.position); } // fit bounds to the actual markers loaded // add a listener for the zoom_changed event so we can store the current zoom level after the call to fitBounds google.maps.event.addListenerOnce(map, 'bounds_changed', function() { currzoom = map.getZoom(); }); map.fitBounds(markerBounds); }); } function getChildNodeData(node) { retval = ''; if (node != null) { if (node.childNodes[0] != null) { retval = node.childNodes[0].nodeValue; } } return retval; } function createMarker(store) { var htmlContent = ""; var infowindow; var markerIcon; if (store.tssLevel == 'B') { markerIcon = blueStarIcon; } else { markerIcon = blueIcon; } var marker = new google.maps.Marker({ position: store.latlng, map: map, //title: store.name, icon: markerIcon }); // implement smartinfowindow instead of stock infowindow htmlContent = '