/*
  Copyright ©2007 DataFile, Inc. All Rights Reserved. DO NOT COPY!
  Author: Perry Joseph
  Contact DataFile, Inc. at info@welovethenet.com for your custom Google Map needs.
  Version: 3.3.2
  Copyright enforced with Digitial Millenium Copyright Act Takedown Provision:
  http://en.wikipedia.org/wiki/DMCA#Example_of_DMCA_Takedown_Provision
  Note: Copyright violators will be legally pursued. Get your own box! Do your own work!
*/  

if (top.location != self.location) // Frames breakout
  top.location = self.location;

if (GBrowserIsCompatible()) {
  var map = [];
  var gicons = [];
  var redicon = new GIcon();
  redicon.image = "mm_20_red.png";
  redicon.shadow = "mm_20_shadow.png";
  redicon.iconSize = new GSize(12, 20);
  redicon.shadowSize = new GSize(22, 20);
  redicon.iconAnchor = new GPoint(6, 20);
  redicon.infoWindowAnchor = new GPoint(5, 1);
  gicons["poi"]  = redicon;
  /* gicons[""] = new GIcon(redicon, "mm_20_black.png"); */
  gicons["bb"] = new GIcon(redicon, "mm_20_blue.png");
  gicons["winery"] = new GIcon(redicon, "mm_20_yellow.png");
  gicons["restaurant"]  = new GIcon(redicon, "mm_20_purple.png");
  /* gicons[""]  = new GIcon(redicon, "mm_20_brown.png"); */
  /* gicons[""]  = new GIcon(redicon, "mm_20_gray.png"); */
  gicons["service"]  = new GIcon(redicon, "mm_20_green.png");
  gicons["shop"]  = new GIcon(redicon, "mm_20_orange.png");
  gicons["church"] = new GIcon(redicon, "mm_20_white.png");
  /* Must be last because of changes to shadow and size specs */
  var select_html = '<select onChange="handleSelected(this)">' +
                    '<option selected> - Select a location - </option>';
  var gmarkers = [];
  var i = 0;
  function parseGetVars() {                        // Called in load()
    var getVars = new Array();
    var qString = unescape(top.location.search.substring(1));
    var pairs = qString.split(/\&/);
    for (var i in pairs) {
      var nameVal = pairs[i].split(/\=/);
      getVars[nameVal[0]] = nameVal[1];
    }	
    return getVars;
  }
  function createMarker(point,name,html,icon) {    // Called in load()
    var marker = new GMarker(point, gicons[icon]);
    marker.type = icon;
    marker.display = true;
    marker.name = name;
    marker.html = html;
    marker.tooltip = '<div class="tooltip">'+name+'</div>';
    GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml(html);
      map.setCenter(marker.getPoint(),17,G_HYBRID_MAP);
    });
    gmarkers[i] = marker;
    select_html += '<option value=' + i + '> ' + name + '</option>';
    i++;
    GEvent.addListener(marker,"mouseover", function() {
      showTooltip(marker);
    });        
    GEvent.addListener(marker,"mouseout", function() {
      tooltip.style.visibility="hidden"
    });        
    return marker;
  }
  function showTooltip(marker) {
    tooltip.innerHTML = marker.tooltip;
    var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
    var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
    var anchor=marker.getIcon().iconAnchor;
    var width=marker.getIcon().iconSize.width;
    var height=tooltip.clientHeight;
    var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
    pos.apply(tooltip);
    tooltip.style.visibility="visible";
  }
  // === if dummy select, info window closes
  function handleSelected(opt) {
    var i = opt.selectedIndex - 1; 
    if (i > -1) {
      GEvent.trigger(gmarkers[opt.value],"click");
    }
    else {
      map.closeInfoWindow();
    }
  }
  function Markers(selection){
    map.getInfoWindow().hide();
    select_html = '<select onChange="handleSelected(this)">' +
                    '<option selected> - Select a location - </option>';
    for (var i=0; i<gmarkers.length; i++) {
      if ( gmarkers[i].type==selection || selection=="all" ) {
        if ( gmarkers[i].display==false ) {
           map.addOverlay(gmarkers[i]);
           gmarkers[i].display=true;
           tooltip.innerHTML = gmarkers[i].tooltip;
           GEvent.addListener(gmarkers[i],"mouseover", function() {
            showTooltip(gmarkers[i]);
           });        
           GEvent.addListener(gmarkers[i],"mouseout", function() {
             tooltip.style.visibility="hidden"
           });
        }
        select_html += '<option value=' + i + '> ' + gmarkers[i].name + '</option>';
      }
      else {
        if (gmarkers[i].type!=selection && gmarkers[i].display==true && selection != "all") {       
          map.removeOverlay(gmarkers[i]);
          gmarkers[i].display=false;
        }
      }
    }
    select_html += '</select>';
    document.getElementById("selection").innerHTML = select_html;
  }
  function wheelZoom(a){
    if (a.detail) // Firefox
      {
      if (a.detail < 0)
        { map.zoomIn(); }
      else if (a.detail > 0)
	{ map.zoomOut(); }
      }
      else if (a.wheelDelta) // IE
      {
      if (a.wheelDelta > 0)
        { map.zoomIn(); }
      else if (a.wheelDelta < 0)
        { map.zoomOut(); }
      }
    }
 }
else {
  alert("Sorry, this application is not compatible with this browser");
}

function load(targetlat,targetlon,zoom,xmlfile) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(targetlat,targetlon), zoom );
    map.setMapType(G_HYBRID_MAP);
    map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(5, 5))); 
    map.addControl(new GOverviewMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT));
    map.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5, 5)));
    map.hideControls();
    map.enableContinuousZoom();
    map.enableDoubleClickZoom();
    GEvent.addListener(map, "mouseover", function(){map.showControls()});
    GEvent.addListener(map, "mouseout", function(){map.hideControls()});
    GEvent.addDomListener(document.getElementById("map"), "DOMMouseScroll", wheelZoom); // Firefox
    GEvent.addDomListener(document.getElementById("map"), "mousewheel",     wheelZoom); // IE
    new GKeyboardHandler(map);
    GDownloadUrl(xmlfile + "-map.xml", function (doc) {
    var xmlDoc = GXml.parse(doc);
    markers = xmlDoc.documentElement.getElementsByTagName("marker");
    var GetVar = parseGetVars();
    for (var i in GetVar)
    if ( i == "marker") {
      var GetVarMarker = GetVar[i];
    } 
    for (var i = 0; i < markers.length; i++) {
      var lat = parseFloat(markers[i].getAttribute("lat"));
      var lng = parseFloat(markers[i].getAttribute("lng"));
      var point = new GLatLng(lat,lng);
      var label = markers[i].getAttribute("label");
      var myVariable = document.getElementById ? 1 : 0;
      var html = ( markers[i].getAttribute("html") != null ) ? '<div class="infowindow">'+ markers[i].getAttribute("html") +'</div>' : label;
      var image = markers[i].getAttribute("image");
      var iw = markers[i].getAttribute("iw");
      var ih = markers[i].getAttribute("ih");
      if ( image != null) {
        html += '<div class="infowindowimg"><img src="../images/' + image + '" ';
        if ( iw != null && ih != null) {
          html += 'width="' + iw + '" height="' + ih + '"' ;
        }
        else {
          html += 'width="124" height="81"' ;
        }
        html += ' /></div>';
      };
      var link = markers[i].getAttribute("link");
      if ( link != null) { 
           html += '<div class="infolink"><a href="http://' + link + '" target="_blank">' + label + '</a></div>';
         };
      var icon = markers[i].getAttribute("icon");
      var marker = createMarker(point,label,html,icon);
      map.addOverlay(marker);
      if (( GetVarMarker != null ) && ( GetVarMarker == label ))  {
            var nMrkrNdx = i;
      }
    }
     select_html += '</select>';
    document.getElementById("selection").innerHTML = select_html;
    tooltip = document.createElement("div");
    map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
    tooltip.style.visibility="hidden";
    if (window.attachEvent) { 
        window.attachEvent("onresize", function() {this.map.onResize()} );
    } else {
        window.addEventListener("resize", function() {this.map.onResize()} , false);
    }
    if ( nMrkrNdx != null ) {
      GEvent.trigger(gmarkers[nMrkrNdx],"click");
    }
  });    // end GDownloadUrl()
}
  else {
    alert("Sorry, this application is not compatible with this browser");
  }
}
function openWindow(contentURL,windowName,windowWidth,windowHeight) {
 widthHeight = 'height=' + windowHeight + ',width=' + windowWidth;
 newWindow = window.open(contentURL,windowName,widthHeight);
 newWindow.focus()
}
// EOF