﻿/************
 *  Dealer Finder Javascript
 **********************************************************/
var map;
var addy;
var trafficInfo;
var dealers;
var Retread;
var Rv;
var DealerMarkers = new Array();
var PlazaMarkers = new Array();
var RVMarkers = new Array();
var RTDMarkers = new Array();
var AllDealers = new Array();
var AllDealersParams = new Array();
//var TypesTP = new Array("Generic", "Bosselman", "Loves", "Pilot", "Flying J");
var TypeDealer = new Array("dealer");
var Types24 = new Array("24Dealer");
var TypeTravelPlaza = new Array("tp");
var TypesOnsite = new Array("TireOnsite");
var TypeMRTDealer = new Array("mrt");
var TypeRVDealer = new Array("rv");
var TypeMCSNDealer = new Array("servicenetwork");
var gmarkers = [];
var weatherHTMLholder = "";
var streetsfixed = "http://maps.google.com/maps?hl=en&ie=UTF8&layer=c&panoid=Oy2FcZ9uNYE_8so7XhWugA&cbp=11,263.400924591814,,0,-7.1364205710919&z=14&iwloc=addr&utm_campaign=en&utm_medium=lp&utm_source=en-lp-na-us-gns-svn";
var directionfixed = "http://maps.google.com/maps?f=d&source=s_d&s&geocode=%3B%3BFRj2FwId4pAP-w%3B&hl=en&mra=dme&mrcr=0&mrsp=1&sz=10&via=1,2&rtol=0,2,3&ie=UTF8&z=10";
var hotelrestfixed = "http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&sspn=0.720388,1.417236&ie=UTF8&spn=0.086524,0.177155&z=13";
var imageurlstart = "https://www.michelindealerincentives.com/dealerprofile/storeimages/";

       
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
} // String.prototype.trim = function() {

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
} // String.prototype.ltrim = function() {

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
} // String.prototype.rtrim = function() {

String.prototype.contains = function(t) { 
  return this.indexOf(t) >= 0 ? true : false 
} // String.prototype.contains = function(t) {
      
Array.prototype.contains = function(obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; }


function gup(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return unescape(results[1]); }


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } // if (typeof window.onload != 'function') {
  else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      } // if (oldonload) {
      func();
    } // window.onload = function() {
  } // else -- if (typeof window.onload != 'function') {
} // function addLoadEvent(func) {

        
function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    /*center on greenville intialally*/
    var center = new GLatLng(38.62749, -90.19842);
    map.setCenter(center, 3);
                              
    /*add map controls*/
    map.addControl(new GLargeMapControl3D());
    map.addControl(new GMapTypeControl());
    geocoder = new GClientGeocoder();
                                
    var get_type = gup('type');
    if (get_type == "mrt"){
      var ShowRTD = document.getElementById("rtddealers");
      if (ShowRTD)
        ShowRTD.checked = true;
    } // if (get_type == "mrt"){
    else if (get_type == "rv") {
      var ShowRV = document.getElementById("rvdealers");
      if (ShowRV)
        ShowRV.checked = true;
    } // else if (get_type == "rv") {
            
    var get_address = gup('address');
    if (get_address != "") {
      var AddressInput = document.getElementById("address");
      if (AddressInput)
        AddressInput.value = get_address;
      showAddress(get_address);                
    } // if (get_address != "") {
  } // if (GBrowserIsCompatible()) {
} // function initialize() {
        
       
/* strings to the postal code - needs to be parsed - and then look for the weather */
function loadJSON(result) {
//  var temp = new Array();
//  temp = JSON.stringify(result).split('"');
  //take the zip and feed it to the webservice - but how? With jquery of course this block calls the webservice and returns the weather
  /// <reference path="./!Scripts/jquery-1.2.3.min.js" />
//  var zip = temp[5];
  var zip = result;
  $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "WebServices/WebService.asmx/WeatherXML",
    data: "{'zip':'" + zip + "'}",
    dataType: "json",
    success: function(msg) {
      var weatherholder = document.getElementById("weatherholder");
      var weatherbox = document.getElementById("weathercheck");                
      weatherHTMLholder = msg;
      if (weatherholder && weatherbox.checked) {
        weatherholder.innerHTML = msg;
      }
    }, // success: function(msg) {
    error: function() {
      alert("There was an error retrieving weather data!");
    } // error: function() {
  }); // $.ajax({            
} // function loadJSON(result) {
        
                
/*gecodes the address and points the map*/
function showAddress(address) {
  map = new GMap2(document.getElementById("map_canvas"));
  map.addControl(new GLargeMapControl3D());
  map.addControl(new GMapTypeControl());
  gmarkers = [];
  DealerMarkers = new Array();
  PlazaMarkers = new Array();
  RVMarkers = new Array();
  RTDMarkers = new Array();
  AllDealers = new Array();
  AllDealersParams = new Array();
       
  // Create a base icon for all of our markers that specifies the shadow, icon dimensions, etc.
  var dealerIcon = new GIcon();
  dealerIcon.iconSize = new GSize(32, 38);
  dealerIcon.shadowSize = new GSize(0, 0);
  dealerIcon.iconAnchor = new GPoint(0, 0);
  dealerIcon.infoWindowAnchor = new GPoint(15, 7); 
  dealerIcon.transparent = '!images/icon_overLay.png';
          
  var custIcon = new GIcon();
  custIcon.iconSize = new GSize(21, 34);
  custIcon.shadowSize = new GSize(0, 0);
  custIcon.iconAnchor = new GPoint(0, 0);
  custIcon.infoWindowAnchor = new GPoint(15, 7);
  custIcon.transparent = '!images/icon_overLay.png';
      
  var myIcons = [];
  myIcons['home'] = new GIcon(dealerIcon, '!images/icon_youLocation.png');
            
  if (geocoder) { 
    geocoder.getLatLng(address, function(point) {
      if (!point) {
        alert(address + " introuvable.");
      } // if (!point) {
      else {
        //to be used with lat/long search
        document.getElementById('search-str').innerHTML = address;
        var radius = "";
        radius = document.getElementById("radiusSelect");
        var radiusvalue = "25";
        var get_radius = gup('radius');
        if (get_radius != "") {
          radiusvalue = get_radius;
        }
        else if (radius)
          radiusvalue = radius.options[radius.selectedIndex].value;
        var url = "";
        url = "WebServices/WebService.asmx/DealerXML?radius=" + radiusvalue;
        url += "&lat=" + point.lat().toFixed(5);
        url += "&lng=" + point.lng().toFixed(5);
        document.getElementById("lat").innerHTML = "<span>lat: " + point.lat().toFixed(5) + "</span>";
        document.getElementById("lng").innerHTML = "<span>lng: " + point.lng().toFixed(5) + "</span>";

	      InitWeather(point.lat().toFixed(5), point.lng().toFixed(5));
	                    
	      map.clearOverlays();
	      switch (radiusvalue) {
	        case '50':
	          map.setCenter(point, 8);
	          break;
	        case '100':
	          map.setCenter(point, 7);
	          break;
	        case '150':
	          map.setCenter(point, 7);
	          break;
	        case '200':
	          map.setCenter(point, 6);
	          break;
	        default:
	          map.setCenter(point, 9);
	          break;
	      }
        var marker = new GMarker(point, { icon: myIcons['home']});
	      map.addOverlay(marker);
    		            
	      /*traffic overlay*/
        var trafficOptions = {incidents:true};
        trafficInfo = new GTrafficOverlay(trafficOptions);
        var trafficbox = document.getElementById("traffic");

        if (trafficbox && trafficbox.checked) {
          map.addOverlay(trafficInfo);
        }
        else {
          toggleState = 0;
        }
                        
        GDownloadUrl(url, function(doc) {
          var xmlDoc = GXml.parse(doc);
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
            // obtain the attribues of each marker
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var distance = (markers[i].getAttribute("distance") * 1.609344).toFixed(3) + " KM";
            var html = markers[i].getAttribute("html");
            var name = markers[i].getAttribute("label");
            var dealeraddress = markers[i].getAttribute("street") + " " + markers[i].getAttribute("location");
            var street = markers[i].getAttribute("street");
            var location = markers[i].getAttribute("location");
            var phone = markers[i].getAttribute("phone");
            var web = markers[i].getAttribute("website");
            //            var weekdays = markers[i].getAttribute("weekday");
            //            var weekend = markers[i].getAttribute("saturday");
            var weekdays = "";
            var weekend = "";
            var travelplaza = markers[i].getAttribute("travelplaza").trim();
            var rvdealer = markers[i].getAttribute("RVdealer");
            var rtddealer = markers[i].getAttribute("RTDdealer");
            var services = markers[i].getAttribute("services").trim();
            services = services.replace(/MD/g, "<sup>MD</sup>");
            var products = markers[i].getAttribute("products").trim();
            var images = markers[i].getAttribute("images").trim();
            var hoursserv = markers[i].getAttribute("hoursserv").trim();
            var hourers = markers[i].getAttribute("hourers").trim();
            var afterhours = markers[i].getAttribute("afterhours").trim();
            var secondafterhours = markers[i].getAttribute("secondafterhours");
            var tollfree = markers[i].getAttribute("tollfree");
            var faxnumber = markers[i].getAttribute("faxnumber");
            //            var sunday = markers[i].getAttribute("sunday");
            var sunday = "";
            var national = markers[i].getAttribute("national");
            var twentyfour = markers[i].getAttribute("twentyfour");
            var twentyfourHeader = markers[i].getAttribute("twentyfourHeader");
            var RoadsideService = markers[i].getAttribute("RoadsideService");
            var MichelinRetreadTires = markers[i].getAttribute("MichelinRetreadTires");
            var MICHELINXOne = markers[i].getAttribute("MICHELINXOne");
            var searchaddress = markers[i].getAttribute("street") + "+" + markers[i].getAttribute("location").replace(",", "+");
            var servicenetwork = markers[i].getAttribute("servicenetwork");
            var mobilonly = markers[i].getAttribute("mobilonly");
            if (mobilonly && (mobilonly == "true"))
              mobilonly = true;
            else
              mobilonly = false;
            var searchpoint = point.lat().toFixed(5) + "," + point.lng().toFixed(5);
            var streetsUrl = streetsfixed + "&q=" + searchaddress + "&g=" + searchaddress + "&cbll=" + searchpoint + "&ll=" + searchpoint;
            var directionUrl = directionfixed + "&daddr=" + searchaddress;
            var HotelsUrl = hotelrestfixed + "&q=" + searchaddress + "+hotels";
            var RestaurantsUrl = hotelrestfixed + "&q=" + searchaddress + "+restaurants";
            var ListType = "Dealer";
            //            if (i > 99) {
            //              myIcons['dealers'] = new GIcon(custIcon, 'http://chart.apis.google.com/chart?chst=d_map_spin&chld=.55|0|1a1ae1|10|_|' + (i+1));
            //              myIcons['rtd'] = new GIcon(custIcon, 'http://chart.apis.google.com/chart?chst=d_map_spin&chld=.55|0|faf725|10|_|' + (i+1));
            //            }
            //            else {
            // #008A63 faf725  1a1ae1         
            myIcons['dealers'] = new GIcon(custIcon, 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + (i + 1) + '|1a1ae1|ffffff');
            myIcons['rtd'] = new GIcon(custIcon, 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + (i + 1) + '|008A63|ffffff');
            myIcons['servicenetwork'] = new GIcon(custIcon, 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + (i + 1) + '|faf725|000000');
            //            }       
            if (rtddealer.trim().toLowerCase() == "true")
              ListType = "RetreadDealer";
                      
            var Parameters = new Array();
            var ExtendedItems = new Array();
            var MainInformation = FormatTopInfo(name, street, location, phone, services, afterhours, twentyfour, distance, (i + 1), ListType, dealeraddress, address, point, twentyfourHeader, MichelinRetreadTires, MICHELINXOne, mobilonly, national, servicenetwork);
            var OtherStuff = FormatBottomInfo(point, name, address, phone, web, weekdays, weekend, streetsUrl, directionUrl, services, afterhours, secondafterhours, tollfree, faxnumber, sunday, distance, HotelsUrl, RestaurantsUrl, i, ListType, mobilonly, products, images, hoursserv, hourers);
            ExtendedItems.push(MainInformation);        
            ExtendedItems.push(OtherStuff);        
            AllDealers.push(ExtendedItems);        
            AllDealersParams.push(Parameters);   
            var ParamsIndex = AllDealersParams.length - 1;
                                                                 
            AllDealersParams[ParamsIndex].push(TypeDealer);
            if (rtddealer.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(TypeMRTDealer); }
            if (rvdealer.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(TypeRVDealer); }
            if (travelplaza.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(TypeTravelPlaza); }
            if (twentyfour.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(Types24); }
            if (servicenetwork.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(TypeMCSNDealer); AllDealersParams[ParamsIndex].push(TypeMRTDealer); }
            if (RoadsideService.trim().toLowerCase() == "true") { AllDealersParams[ParamsIndex].push(TypesOnsite); }
//            if (services.contains("On Site Service")) { AllDealersParams[ParamsIndex].push(TypesOnsite); }
                    
            dealers = createMarker(point, name, street, location, address, dealeraddress, phone, web, weekdays, weekend, streetsUrl, directionUrl, services, afterhours, secondafterhours, tollfree, faxnumber, sunday, distance, HotelsUrl, RestaurantsUrl, (i + 1), ListType, twentyfourHeader, MichelinRetreadTires, MICHELINXOne, mobilonly, national, servicenetwork);
            DealerMarkers.push(dealers);    
            map.addOverlay(dealers);
                    
          } // for (var i = 0; i < markers.length; i++) {
          DisplayDealerList();        
        }); // GDownloadUrl(url, function(doc) {
                        
        // A function to create the marker and set up the event window
        function createMarker(point, name, street, location, address, dealeraddress, phone, web, weekdays, weekend, streetsUrl, directionUrl, services, afterhours, secondafterhours, tollfree, faxnumber, sunday, distance, HotelsUrl, RestaurantsUrl, i, ListType, twentyfourHeader, MichelinRetreadTires, MICHELINXOne, mobilonly, national, servicenetwork) {
          var useIcon = "";
          if (servicenetwork == "true") {
            useIcon = myIcons['servicenetwork'];
          }
          else if (ListType == "RetreadDealer") {
            useIcon = myIcons['rtd']; 
          } // if (ListType == "RetreadDealer") {
          else { 
            useIcon = myIcons['dealers']; 
          } // else -- if (ListType == "RetreadDealer") {
                            
          var marker = new GMarker(point, useIcon);
//          GEvent.addListener(marker, "mouseover", function() {
          var secondtab = "<div class=\"gmtabcontainor\">";
          if (twentyfourHeader && (twentyfourHeader != ""))
            secondtab += "<p>" + twentyfourHeader + "</p>";

          secondtab += "<p>Pneus neufs MICHELIN<sup>MD</sup></p>";

          if (MichelinRetreadTires && (MichelinRetreadTires != ""))
            secondtab += "<p>" + MichelinRetreadTires + "</p>";

          if (MICHELINXOne && (MICHELINXOne != ""))
            secondtab += "<p>" + MICHELINXOne + "</p>";

          if (national && (national.trim().toLowerCase() == "true"))
            secondtab += "<p>Comptes nationaux</p>";
          if (!mobilonly) {
            secondtab += "<p><a href=\"" + HotelsUrl + "\" target=\"_Blank\">H&ocirc;tels</a></p>";
            secondtab += "<p><a href=\"" + RestaurantsUrl + "\" target=\"_Blank\">Restaurants</a></p>";
          }
          secondtab += "</div>";
          GEvent.addListener(marker, "click", function() {
            if (mobilonly)
              marker.openInfoWindowTabsHtml([new GInfoWindowTab("Principal", "<div class=\"infoballtab1\"><p><strong>" + name + "</strong></p><p>Mobil Unit Only</p><p>Distance: " + distance + "</p><p>T&eacute;l&eacute;phone: " + phone + "</p><p>Apr&egrave;s les heures d'ouverture: " + afterhours + "</p></div>"), new GInfoWindowTab("Services", secondtab)]);
            else
              marker.openInfoWindowTabsHtml([new GInfoWindowTab("Principal", "<div class=\"infoballtab1\"><p><strong>" + name + "</strong></p><p>" + street + "<br />" + location + "</p><p><a href=\"#\" onclick=\"window.open('Directions.aspx?toaddress=" + escape(dealeraddress) + "&fromaddress=" + escape(address) + "','locatorwindow');\">Indications</a></p><p>Distance: " + distance + "</p><p>T&eacute;l&eacute;phone: " + phone + "</p><p>Apr&egrave;s les heures d'ouverture: " + afterhours + "</p></div><div>Latitude: " + point.lat().toFixed(5) + "</div><div>Longitude: " + point.lng().toFixed(5) + "</div>"), new GInfoWindowTab("Services", secondtab)]);
          }); // GEvent.addListener(marker, "click", function() {
          return marker;
        } // function createMarker(point,name,html,address,phone,web,weekdays,weekend...
                        
        // This function picks up the click and opens the corresponding info window
        function myclick(i) {
          GEvent.trigger(gmarkers[i], "click");
        } // function myclick(i) {
      } // else -- if (!point) {
    }); // geocoder.getLatLng(address, function(point) {
  } // if (geocoder) {
} // function showAddress(address) {


function FormatTopInfo(name, street, location, phone, services, afterhours, twentyfour, distance, i, ListType, dealeraddress, address, point, twentyfourHeader, MichelinRetreadTires, MICHELINXOne, mobilonly, national, servicenetwork) {
  var DetailList = "";
  // #008A63 faf725  1a1ae1         
  if (servicenetwork == "true") { 
      DetailList += "<div class=\"loc-name\"><p><img class=\"pinicons\" src=\"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=" + i + "|faf725|000000\" /><strong>" + name + "</strong>";
  } // else -- if (ListType == "RetreadDealer") {
  else if (ListType == "RetreadDealer") { 
//    if (i > 99) {
//      DetailList += "<div class=\"loc-name\"><p><img class=\"pinicons\" src=\"http://chart.apis.google.com/chart?chst=d_map_spin&chld=.55|0|faf725|10|_|" + i + "\" /><strong>" + name + "</strong>";
//    }
//    else {
    DetailList += "<div class=\"loc-name\"><p><img class=\"pinicons\" src=\"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=" + i + "|008A63|ffffff\" /><strong>" + name + "</strong>";
//   }
  } // if (ListType == "RetreadDealer") {
  else { 
    DetailList += "<div class=\"loc-name\"><p><img class=\"pinicons\" src=\"http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=" + i + "|1a1ae1|ffffff\" /><strong>" + name + "</strong>";
  }
  if (distance != "") DetailList += "<label class=\"margin\"><em>" + distance + "</em></label>";
  else DetailList += "<label>Distance: N/A</label>";

  if (servicenetwork == "true") DetailList += "<span class=\"servicenetwork\"></span>";
  
  DetailList += "</p>";

  if (mobilonly) DetailList += "<p><label>Mobile Unit Only</label></p>";
  else {
    if (street != "") DetailList += "<p><label>" + street + "</label><label>" + location + "</label>";
    else DetailList += "<p><label>Address: N/A</label>";

    if (dealeraddress != "") DetailList += "<label class=\"margintop\"><a href=\"Directions.aspx?toaddress=" + escape(dealeraddress) + "&fromaddress=" + escape(address) + "\" target=\"_Blank\">Indications</a></label>\n";
    DetailList += "<label class=\"margintop\">Latitude: " + point.lat().toFixed(5) + "</label>\n";
    DetailList += "<label class=\"margintop\">Longitude: " + point.lng().toFixed(5) + "</label>\n";

    DetailList += "</p>\n";
  }
  
  if (twentyfour == "true") {
    if (afterhours != "") {
      if (phone != "") DetailList += "<p><label>Business Phone: <strong>" + phone + "</strong></label>";
      else DetailList += "<p><label>Business Phone: N/A</label>";
      if (afterhours != "") DetailList += "<label>After Hours: <strong>" + afterhours + "</strong></label></p>";
      else DetailList += "<label>After Hours Phone: N/A</label></p>";
    }
    else {
      if (phone != "") DetailList += "<p><label>Business Phone: <strong>" + phone + "</strong></label>";
      else DetailList += "<p><label>Business Phone: N/A</label>";
      if (afterhours != "") DetailList += "<label>After Hours: <strong>" + afterhours + "</strong></label></p>";
      else DetailList += "<label>After Hours Phone: N/A</label></p>";
    }
  }
  else {
    if (phone != "") DetailList += "<p><label>T&eacute;l&eacute;phone d'affaires: <strong>" + phone + "</strong></label>";
    else DetailList += "<label>T&eacute;l&eacute;phone d'affaires: N/A</label>";
    if (afterhours != "") DetailList += "<label>Apr&egrave;s les heures d'ouverture: <strong>" + afterhours + "</strong></label></p>";
    else DetailList += "<label>Apr&egrave;s les heures d'ouverture: N/A</label></p>";
  }  
                
  DetailList += "<p>";
  if (twentyfour)
    DetailList += "<label>" + twentyfourHeader + "</label>";

  DetailList += "<label>Pneus neufs MICHELIN<sup>MD</sup></label>";

  if (MichelinRetreadTires && (MichelinRetreadTires != "")) {
    var replacestring = "<sup>MD</sup>"
    if (MichelinRetreadTires.contains("MD")) {
      MichelinRetreadTires = MichelinRetreadTires.replace(/MD/, replacestring);
    }
    DetailList += "<label>" + MichelinRetreadTires + "</label>";
  }

  if (MICHELINXOne && (MICHELINXOne != ""))
    DetailList += "<label>" + MICHELINXOne + "</label>";
  if (national && (national.trim().toLowerCase() == "true"))
    DetailList += "<label>Comptes nationaux</label>";
  DetailList += "</p><div class=\"clear\"></div></div>\n";
          
  return DetailList;
} // function FormatTopInfo(name,street,location,phone,services,afterhours,distance,i,ListType) {        


function FormatBottomInfo(point, name, address, phone, web, weekdays, weekend, streetsUrl, directionUrl, services, afterhours, secondafterhours, tollfree, faxnumber, sunday, distance, HotelsUrl, RestaurantsUrl, i, ListType, mobilonly, products, images, hoursserv, hourers) {
  var DetailList = "<div class=\"OtherStuff\">";

  DetailList += "<div class=\"AccordionContainer\" id=\"AccordionContainer" + i + "\">\n";
  DetailList += "<div class=\"AccordionTitle acc_closed\">\n";
  DetailList += "  <h3><span>Accordion Header</span></h3>\n";
  DetailList += "</div>\n";
  DetailList += "<div class=\"AccordionContent item1\">\n";
  if (services != "") DetailList += "<label>Services:</label><p>" + services + "</p><div class=\"clear\"></div>\n";
  else DetailList += "<label>Services:</label><p>N/A</p><div class=\"clear\"></div>";
  if (products != "") DetailList += "<label class=\"long\">Produits additionnels:</label><p class=\"short\">" + products + "</p><div class=\"clear\"></div>\n";
  if (images != "") {
    var imagelist = "";
    var imagefilenames = images.split('|');
    for (var k = 0; k < imagefilenames.length; k++) {
      if (imagelist == "") {
        imagelist += "<a rel=\"lightbox[site" + i + "]\" title=\"Site Photo" + (k + 1) + "\" href=\"" + imageurlstart + imagefilenames[k].trim() + "\">Photo " + (k + 1) + "</a>";
      }
      else
        imagelist += " | <a rel=\"lightbox[site" + i + "]\" title=\"Site Photo" + (k + 1) + "\" href=\"" + imageurlstart + imagefilenames[k].trim() + "\">Photo " + (k + 1) + "</a>";
    } 
    DetailList += "<label>Photos:</label><p>" + imagelist + "</p><div class=\"clear\"></div>\n";
  }
  if (!mobilonly) {
    DetailList += "<div class=\"MediumHolder\"><a href=\"" + HotelsUrl + "\" target=\"_Blank\"><span class=\"hotel\"></span><em>H&ocirc;tels</em></a></div>\n";
    DetailList += "<div class=\"MediumHolder\"><a href=\"" + RestaurantsUrl + "\" target=\"_Blank\"><span class=\"food\"></span><em>Restaurants</em></a></div><div class=\"clear\"></div>\n";
  }
  DetailList += "</div>\n";
  DetailList += "</div>\n";

  var ServTable = "";
  var ErsTable = ""
  if (hoursserv != "") {
    var hoursservout1 = "";
    var hoursservout1_hasdata = false;
    var hoursservout2 = "";
    var hoursservout2_hasdata = false;
    var hoursservlist = hoursserv.split('|');
    for (var j = 0; j < hoursservlist.length; j++) {
      if ((j % 2) == 0) {
        if (hoursservlist[j].trim() != "") {
          hoursservout1_hasdata = true;
        }
        hoursservout1 += "<td>" + hoursservlist[j].trim() + "</td>";
      } // if ((j % 2) == 0) {
      else {
        if (hoursservlist[j].trim() != "") {
          hoursservout2_hasdata = true;
        } // if (hoursservlist[j].trim() != "") {
        hoursservout2 += "<td>" + hoursservlist[j].trim() + "</td>";
      } // else if ((j % 2) == 0) {
    } // for (var j = 0; j < hoursservlist.length; j++) {
    if (hoursservout1_hasdata && hoursservout2_hasdata) {
      var hoursservline0 = "<tr><th></th><td>dim.</td><td>lun.</td><td>mar.</td><td>mer.</td><td>jeu.</td><td>ven.</td><td>sam.</td></tr>\n";
      var hoursservline1 = "<tr><th>Ouvert</th>" + hoursservout1 + "</tr>\n";
      var hoursservline2 = "<tr><th>Ferm&eacute;</th>" + hoursservout2 + "</tr>\n";
      ServTable += "<h4>Heures r&eacute;guli&egrave;res de service:</h4>\n";
      ServTable += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n";
      ServTable += "<thead>\n";
      ServTable += hoursservline0;
      ServTable += "</thead>\n";
      ServTable += "<tbody>\n";
      ServTable += hoursservline1;
      ServTable += hoursservline2;
      ServTable += "</tbody>\n";
      ServTable += "</table>\n";
    } // if (hoursservout1_hasdata && hoursservout2_hasdata) {
  } // if (hoursserv != "") {
  if (hourers != "") {
    var hourersout1 = "";
    var hourersout1_hasdata = false;
    var hourersout2 = "";
    var hourersout2_hasdata = false;

    var hourerslist = hourers.split('|');
    for (var k = 0; k < hourerslist.length; k++) {
      if ((k % 2) == 0) {
        if (hourerslist[k].trim() != "") {
          hourersout1_hasdata = true;
        }
        hourersout1 += "<td>" + hourerslist[k].trim() + "</td>";
      } // if ((k % 2) == 0) {
      else {
        if (hourerslist[k].trim() != "") {
          var hourersout2_hasdata = true;
        } // if (hourerslist[k].trim() != "") {
        hourersout2 += "<td>" + hourerslist[k].trim() + "</td>";
      } // else if ((k % 2) == 0) {
    } // for (var k = 0; k < hourerslist.length; k++) {
    if (hourersout1_hasdata && hourersout2_hasdata) {
      var hourersline0 = "<tr><th></th><td>dim.</td><td>lun.</td><td>mar.</td><td>mer.</td><td>jeu.</td><td>ven.</td><td>sam.</td></tr>\n";
      var hourersline1 = "<tr><th>Open</th>" + hourersout1 + "</tr>\n";
      var hourersline2 = "<tr><th>Closed</th>" + hourersout2 + "</tr>\n";
      ErsTable += "<h4>Emergency Roadside Service Hours:</h4>\n";
      ErsTable += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">\n";
      ErsTable += "<thead>\n";
      ErsTable += hourersline0;
      ErsTable += "</thead>\n";
      ErsTable += "<tbody>\n";
      ErsTable += hourersline1;
      ErsTable += hourersline2;
      ErsTable += "</tbody>\n";
      ErsTable += "</table>\n";
    } // if (hoursservout1_hasdata && hoursservout2_hasdata) {
  } // if (hoursserv != "") {
  if ((ErsTable != "") || (ServTable != "")) {
    DetailList += "<div class=\"AccordionContainer\" id=\"AccordionContainer_" + i + "\">\n";
    DetailList += "<div class=\"AccordionTitle acc2_closed\">\n";
    DetailList += "  <h3 class=\"timesacchead\"><span>Accordion Header</span></h3>\n";
    DetailList += "</div>\n";
    DetailList += "<div class=\"AccordionContent item1\">\n";
    DetailList += ServTable;
    DetailList += ErsTable;
    DetailList += "</div>\n";
    DetailList += "</div>\n";

  }

  DetailList += "</div>\n";
  return DetailList;
} // function FormatBottomInfo(name,address,phone,web,weekdays,weekend,streetsUrl,directionUrl,services,afterhours,secondafterhours,tollfree,faxnumber,sunday,distance,HotelsUrl,RestaurantsUrl,i,ListType) {        
  
            
/*toggle the traffic overlay - should be able to use with all overlays*/
function toggleTraffic() {
  var trafficbox = document.getElementById("traffic");               

  if (trafficbox && trafficbox.checked) {
    map.addOverlay(trafficInfo);
  }
  else {
    map.removeOverlay(trafficInfo);
  }
} // function toggleTraffic() {
  
            
/*toggle the traffic overlay - should be able to use with all overlays*/
function toggleWeather() {
  var weatherbox = document.getElementById("weathercheck");               
  var weatherholder = document.getElementById("weatherholder");

  if (weatherbox && weatherbox.checked) {
     if (weatherholder) weatherholder.innerHTML = weatherHTMLholder;
  }
  else {
    if (weatherholder) weatherholder.innerHTML = "";
  }

} // function toggleTraffic() {
                
        
function togglePlazas() {          
  var ShowPlaza = document.getElementById("plazas");
  if (ShowPlaza && ShowPlaza.checked) {
    for (var i=0; i < DealerMarkers.length; i++) {
      if (AllDealersParams[i].contains(TypeTravelPlaza)) {
        DealerMarkers[i].show();
      } // if (AllDealersParams[i].contains(TypeTravelPlaza)) {
      else {
        DealerMarkers[i].hide();
      } // else -- if (AllDealersParams[i].contains(TypeTravelPlaza)) {
    } // for (var i=0; i < DealerMarkers.length; i++) {
  } // if (ShowPlaza && ShowPlaza.checked) {
} // function togglePlazas() {
        
        
function toggleOnsite() {          
  var ShowOnsite = document.getElementById("onsite");
  if (ShowOnsite && ShowOnsite.checked) {
    for (var i=0; i < DealerMarkers.length; i++) {
      if (AllDealersParams[i].contains(TypesOnsite)) {
        DealerMarkers[i].show();
      } // if (AllDealersParams[i].contains(TypesOnsite)) {
      else {
        DealerMarkers[i].hide();
      } // else -- if (AllDealersParams[i].contains(TypesOnsite)) {
    } // for (var i=0; i < DealerMarkers.length; i++) {
  } // if (ShowPlaza && ShowPlaza.checked) {
} // function togglePlazas() {
        
        
function toggleRTD() {
  var ShowRTD = document.getElementById("rtddealers");
  if (ShowRTD && ShowRTD.checked) {
    for (var i=0; i < DealerMarkers.length; i++) {
      if (AllDealersParams[i].contains(TypeMRTDealer)) {
        DealerMarkers[i].show();
      } // if (AllDealersParams[i].contains(TypeMRTDealer)) {
      else {
        DealerMarkers[i].hide();
      } // else -- if (AllDealersParams[i].contains(TypeMRTDealer)) {
    } // for (var i=0; i < DealerMarkers.length; i++) {
  } // if (ShowRTD && ShowRTD.checked) {
} // function toggleRTD() {
        
        
function toggleRV() {
  var ShowRV = document.getElementById("rvdealers");
  if (ShowRV && ShowRV.checked) {
    for (var i=0; i < DealerMarkers.length; i++) {
      if (AllDealersParams[i].contains(TypeRVDealer)) {
        DealerMarkers[i].show();
      } // if (AllDealersParams[i].contains(TypeRVDealer)) {
      else {
        DealerMarkers[i].hide();
      } // else -- if (AllDealersParams[i].contains(TypeRVDealer)) {
    } // for (var i=0; i < DealerMarkers.length; i++) {
  } // if (ShowRV && ShowRV.checked) {
} // function toggleRV() {
        
        
function toggle24() {          
  var Show24 = document.getElementById("twentyfour");
  if (Show24 && Show24.checked) {
    Show24.checked = false;
  } // if (ShowPlaza && ShowPlaza.checked) {
  DisplayDealerList();
} // function togglePlazas() {
        
        
function togglePlazas() {          
  var ShowPlaza = document.getElementById("plazas");
  if (ShowPlaza && ShowPlaza.checked) {
    ShowPlaza.checked = false;
  } // if (ShowPlaza && ShowPlaza.checked) {
  DisplayDealerList();
} // function togglePlazas() {
        
        
function toggleOnsite() {          
  var ShowOnsite = document.getElementById("onsite");
  if (ShowOnsite && ShowOnsite.checked) {
    ShowOnsite.checked = false;
  } // if (ShowPlaza && ShowPlaza.checked) {
  DisplayDealerList();
} // function togglePlazas() {
        
        
function toggleRTD() {
  var ShowRTD = document.getElementById("rtddealers");
  if (ShowRTD && ShowRTD.checked) {
    ShowRTD.checked = false;
  } // if (ShowRTD && ShowRTD.checked) {
  DisplayDealerList();
} // function toggleRTD() {
        
        
function toggleRV() {
  var ShowRV = document.getElementById("rvdealers");
  if (ShowRV && ShowRV.checked) {
    ShowRV.checked = false;
  } // if (ShowRV && ShowRV.checked) {
  DisplayDealerList();
} // function toggleRV() {


function checkRadioFilters() {
  var allFilters = new Array();
  allFilters.push(TypeDealer);
  var RadioFilters = document.getElementsByClassName("radio-item","input","left-nav-links");
  for (var j = 0; j < RadioFilters.length; j++) {
    if (RadioFilters[j].checked) {
      switch (RadioFilters[j].id) {
        case "mcsndealers":
          allFilters.push(TypeMCSNDealer);
          break;
        case "twentyfour":
          allFilters.push(Types24);
          break;
        case "plazas":
          allFilters.push(TypeTravelPlaza);
          break;
        case "onsite":
          allFilters.push(TypesOnsite);
          break;
        case "rtddealers":
          allFilters.push(TypeMRTDealer);
          break;
        case "rvdealers":
          allFilters.push(TypeRVDealer);      
          break;
        default:
          break;
      } // switch (FilterUsed.id) {
    } // if (!FilterUsed && RadioFilters[j].checked) {
  } // for (var j = 0; j < RadioFilters.length; j++) {
  return allFilters;
}  // function checkRadioFilters() {     

      
function DisplayDealerList() {
  var allFilterParams = checkRadioFilters();
  var dealercount = 0;
  var list = "<h2>Details</h2><input type=\"button\" class=\"print\" value=\"Imprimer\" onclick=\"PrintListTop();\" /><div class=\"clear\"></div><div class=\"list-head-first\"><div class=\"clear\"></div></div>";
  for (var i = 0; i < AllDealers.length; i++) {
    var addentry = true;
    for (var k = 0; k < allFilterParams.length; k++) {
      if (!AllDealersParams[i].contains(allFilterParams[k])) {
        addentry = false;
        break;
      } // if (!AllDealersParams[i].contains(allFilterParams[k])) {
    } // for (var k = 0; k < allFilterParams.length; k++) {
    if (addentry) {
      DealerMarkers[i].show();
      if ((dealercount%2) == 1) {
        list += "<div class=\"oddentry\">";
        for (var j = 0; j < AllDealers[i].length; j++ ) {
          list += AllDealers[i][j] + "\n";
        } // for (var j = 0; j < AllDealers[i].length; j++ ) {
        list += "</div>";
      } // if ((dealercount%2) == 1) {
      else {
        list += "<div class=\"evenentry\">";
        for (var j = 0; j < AllDealers[i].length; j++ ) {
          list += AllDealers[i][j] + "\n";
        } // for (var j = 0; j < AllDealers[i].length; j++ ) {
        list += "</div>";
      } // else -- if ((dealercount%2) == 1) {
      dealercount++;
    } // if (addentry) {
    else {
      DealerMarkers[i].hide();
    } // else -- if (addentry) {
  } // for (var i = 0; i < AllDealers.length; i++) {
  if (dealercount > 0)
    document.getElementById("service").innerHTML = list;
  else
    document.getElementById("service").innerHTML = "";
         
  InitAccordions();
  InitMarkers();
  initLightbox();
} // function DisplayDealerList(DealerTypeList) { 
        
        
function InitAccordions() {
  var elements = new Array();
  for (var i = 0; i < AllDealers.length; i++) {
    elements.push(document.getElementById("AccordionContainer" + i));
    if (elements[i]) {
      elements[i].JDAccordion = new JDAccordion("AccordionContainer" + i,400.0,-1,'acc_closed','acc_open');
      var headers = document.getElementsByClassName("AccordionTitle", "div", elements[i].id);
      for (var j = 0; j < headers.length; j++) {
        var myElement = elements[i];
        headers[j].onmousedown = (function(e, i) {return function(){ e.JDAccordion.runAccordion(i,this); }})(elements[i], j+1);
      } // for (var j = 0; j < headers.length; j++) {
    } // if (element) {
  } // for (var i = 0; i < AllDealers.length; i++) {
  var elements2 = new Array();
  for (var k = 0; k < AllDealers.length; k++) {
    elements2.push(document.getElementById("AccordionContainer_" + k));
    if (elements2[k]) {
      elements2[k].JDAccordion = new JDAccordion("AccordionContainer_" + k, 400.0, -1, 'acc2_closed', 'acc2_open');
      var headers2 = document.getElementsByClassName("AccordionTitle", "div", elements2[k].id);
      for (var l = 0; l < headers.length; l++) {
        var myElement2 = elements2[k];
        headers2[l].onmousedown = (function (e, k) { return function () { e.JDAccordion.runAccordion(k, this); } })(elements2[k], l + 1);
      } // for (var l = 0; l < headers.length; l++) {
    } // if ((elements2[k]) {
  } // for (var k = 0; k < AllDealers.length; k++) {
} // function InitAccordions() {


function InitMarkers() {
  var locations = document.getElementsByClassName("pinicons","img","service");
  var mymarkers = new Array();
  for (var i = 0; i < locations.length; i++) {
    var chld = locations[i].src.substr(locations[i].src.indexOf("chld="));
    var afterequal = chld.substr(chld.indexOf("=")+1);
    var markerindex = afterequal.substr(0,afterequal.indexOf("|"));
    if ((markerindex != null) && (markerindex != "")) {
      mymarkers[i] = DealerMarkers[markerindex-1];
      GEvent.addDomListener(locations[i], 'click',(function(m){return function() { GEvent.trigger(m, 'click'); document.location.href = '#maptop' }})(mymarkers[i])); // GEvent.addDomListener(div, 'click', function() {
    } //  if ((markerindex != null) && (markerindex != "")) {
  } // for (var i = 0; i < locations.length; i++) {
} // function InitMarkers() {

function printSelection(id){
  var node = document.getElementById(id);
  var content;
  
  if (node)
    content = node.innerHTML;
    
  var pwin=window.open('','print_content','width=100,height=100');

  pwin.document.open();
  pwin.document.write('<html><body onload="window.print()">'+content+'</body></html>');
  pwin.document.close();
 
  setTimeout(function(){pwin.close();},1000);
} // function printSelection(id){


function displayPhoneInfo(id){
  var node = document.getElementById(id);
  var content;
  var winW = 0;
  var winH = 0;
  var offsetH = 0;
  var offsetW = 0;
  var headcontent = "<title>Directives pour acc&eacute;der aux d&eacute;taillants de pneus Poids Lourd Michelin &agrave; travers l'application Google Maps sur votre dispositif mobile</title>\n";
  headcontent += "<link rel=\"stylesheet\" type=\"text/css\" href=\"!css/default.css\" />";
  
  if (node)
    content = node.innerHTML;
    
  if (parseInt(navigator.appVersion)>3) {
    if (navigator.appName=="Netscape") {
      winW = window.innerWidth;
      winH = window.innerHeight;
    } // if (navigator.appName=="Netscape") {
    else if (navigator.appName.indexOf("Microsoft")!=-1) {
      winW = document.body.offsetWidth;
      winH = document.body.offsetHeight;
    } // else if (navigator.appName.indexOf("Microsoft")!=-1) {
  } // if (parseInt(navigator.appVersion)>3) {
  if (winW > 0) {
    offsetH = (winH - 400)/2;
    offsetW = (winW - 400)/2;
  } // if (winW > 0) {
  
  var pwin=window.open('','print_content','width=450,height=450,top=' + offsetH + ',left=' + offsetW);
  pwin.document.open();
  pwin.document.write('<html><head>' + headcontent + '</head><body>'+content+'</body></html>');
  pwin.document.close();
}
function PrintListTop() {
  var dealerlisttop = document.getElementsByClassName("loc-name", "div", "service");
  var printstring = "";
  var containorDiv = document.createElement('div');
  if (containorDiv.ID)
    containorDiv.ID = "service";
  else
    containorDiv.setAttribute("ID", "service");

  var tmpDiv = document.createElement('div');
  tmpDiv.appendChild(containorDiv);
  var dealercount = 0;
  for (var i = 0; i < dealerlisttop.length; i++) {
    var DetailsDiv = document.createElement('div');
    DetailsDiv.innerHTML = dealerlisttop[i].innerHTML;
    DetailsDiv.className = dealerlisttop[i].className;
    var EntryDiv = document.createElement('div');
    if ((dealercount % 2) == 1) {
      EntryDiv.className = "oddentry";
    }
    else {
      EntryDiv.className = "evenentry";
    }
    EntryDiv.appendChild(DetailsDiv);
    containorDiv.appendChild(EntryDiv);
    dealercount++;
  } // END -- for (var i = 0; i < dealerlisttop.length; i++) {
  printstring = tmpDiv.innerHTML;
  var pwin = window.open('', 'print_content', 'width=100,height=100');

  pwin.document.open();
  pwin.document.write('<html><head><title>D&eacute;tails de Imprimer</title><link rel="stylesheet" type="text/css" href="!css/default.css" /><link rel="stylesheet" type="text/css" href="!css/accordion.css" /></head><body onload="window.print()">' + printstring + '</body></html>');
  pwin.document.close();

  setTimeout(function () { pwin.close(); }, 1000);
} // END -- function PrintListTop() {


function InitWeather(latitude, longitude) {
  var mywebservice = "WebServices/GetGeocode.asmx/YahooRevGeocode?latitude=" + latitude + "&longitude=" + longitude;

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (XMLHttpRequestObject) {
    XMLHttpRequestObject.open('GET', mywebservice, true);
    XMLHttpRequestObject.onreadystatechange = function () {
      if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) &&
            XMLHttpRequestObject.status == 200) {
        var AJAXresponse = XMLHttpRequestObject.responseText;
        var myParsedString = "";
        try { //Internet Explorer
          var xmlobject = new ActiveXObject("Microsoft.XMLDOM");
          xmlobject.async = "false";
          xmlobject.loadXML(AJAXresponse);
          myParsedString = xmlobject.childNodes(1).text;
        } // try { Internet Explorer
        catch (e) {
          try { //Firefox, Mozilla, Opera, etc.
            parser = new DOMParser();
            xmlobject = parser.parseFromString(AJAXresponse, "text/xml");
            myParsedString = xmlobject.firstChild.textContent;
          } // try { Firefox, Mozilla, Opera, etc.
          catch (e) {
            xmlobject = null;
          } // catch(e) { -- try { Firefox, Mozilla, Opera, etc.
        } // catch(e) { -- try { //Internet Explorer
        DisplayWeather(myParsedString);
      } // if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
    } // XMLHttpRequestObject.onreadystatechange = function() { 
    XMLHttpRequestObject.send(null);
  }
}


function DisplayWeather(result) {
  var zip = result;
  var mywebservice = "WebServices/WebService.asmx/WeatherXML?zip=" + zip;

  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (XMLHttpRequestObject) {
    XMLHttpRequestObject.open('GET', mywebservice, true);
    XMLHttpRequestObject.onreadystatechange = function () {
      if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) &&
            XMLHttpRequestObject.status == 200) {
        var AJAXresponse = XMLHttpRequestObject.responseText;
        var msg = "";
        try { //Internet Explorer
          var xmlobject = new ActiveXObject("Microsoft.XMLDOM");
          xmlobject.async = "false";
          xmlobject.loadXML(AJAXresponse);
          msg = xmlobject.childNodes(1).text;
        } // try { Internet Explorer
        catch (e) {
          try { //Firefox, Mozilla, Opera, etc.
            parser = new DOMParser();
            xmlobject = parser.parseFromString(AJAXresponse, "text/xml");
            msg = xmlobject.firstChild.textContent;
          } // try { Firefox, Mozilla, Opera, etc.
          catch (e) {
            xmlobject = null;
          } // catch(e) { -- try { Firefox, Mozilla, Opera, etc.
        } // catch(e) { -- try { //Internet Explorer
        var weatherholder = document.getElementById("weatherholder");
        var weatherbox = document.getElementById("weathercheck");
        weatherHTMLholder = msg;
        if (weatherholder && weatherbox.checked) {
          weatherholder.innerHTML = msg;
        }
      } // if (((XMLHttpRequestObject.readyState == 4) || (XMLHttpRequestObject.readyState == 'complete')) && 
    }  // XMLHttpRequestObject.onreadystatechange = function() { 
    XMLHttpRequestObject.send(null);
  } // if (XMLHttpRequestObject) {
} // function DisplayWeather(result) {

