var gmarkers = [];
var map;
var request;
var bounds = new GLatLngBounds();

function myclick(i) {
	GEvent.trigger(gmarkers[i], "click");
}

function myzoom(a) {
	map.setZoom(map.getZoom() + a);
}
	
GEvent.addDomListener(window, "load", load);
GEvent.addDomListener(window, "unload", GUnload); 

function load() {
if (GBrowserIsCompatible()) {
	var side_navbar_html = "";
	var icons = new Array();

// house
icons["house"] = new GIcon(); 
icons["house"].image = "images/housemarker.png"; 
icons["house"].iconSize=new GSize(30, 30); 
icons["house"].iconAnchor=new GPoint(10, 34); 
icons["house"].infoWindowAnchor=new GPoint(10, 10);
//star
icons["star"] = new GIcon(); 
icons["star"].image = "images/star.png"; 
icons["star"].iconSize=new GSize(28, 28); 
icons["star"].iconAnchor=new GPoint(10, 34); 
icons["star"].infoWindowAnchor=new GPoint(10, 10);

function get_icon(iconColor) {
   if ((typeof(iconColor)=="undefined") || (iconColor==null)) { 
      return;
   }
   if (!icons[iconColor]) {
      icons[iconColor] = new GIcon(icons["red"]);
      icons[iconColor].image = "mapIcons/marker_"+ iconColor +".png";
   } 
   return icons[iconColor];
} // end function get_icon

function createTabbedMarker(point,label,tabs,icon) {
	var marker;
	if (icon) {
	   marker = new GMarker(point,get_icon(icon));
		} else {
			marker = new GMarker(point);
		}
		var marker_num = gmarkers.length;
		marker.marker_num = marker_num;
		marker.tabs = tabs;
		gmarkers[marker_num] = marker;
        
GEvent.addListener(gmarkers[marker_num], "click", function() {
	marker.openInfoWindowTabsHtml(gmarkers[marker_num].tabs);
	});
    side_navbar_html += '<li>' + '<a href="javascript:myclick(' + marker_num + ')">' + label + '</a></li>';
	return marker;
} // end function createTabbedMarker

function getNodeValue(Element) {
if ((Element.length>0) && Element[0] && Element[0].firstChild && Element[0].firstChild.nodeValue)
   return Element[0].firstChild.nodeValue;
} // end function getNodeValue

// create the map
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
new GKeyboardHandler(map);
map.setCenter(new GLatLng(36.3955, -78.157 ), 15, G_NORMAL_MAP);

GMap2.prototype.centerAndZoomOnBounds = function(bounds) {
   var center_lat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2.0;
   var center_lng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2.0;
   // var center = new GLatLng(center_lat,center_lng)
   var center = new GLatLng(36.3955, -78.157)
   map.setCenter(center, map.getBoundsZoomLevel(bounds));
} // GMap2 function center on map bounds

request = GXmlHttp.create();
request.open("GET","housedata.xml"+"?NoCache="+escape(Date()), true);  // read XML file containing HTML tab info
request.onreadystatechange = processTabbedXML;
request.send(null); 
}
else {
alert("Sorry, the Google Maps API is not compatible with this browser. Please upgrade your web browser");
}

function processTabbedXML() {  //GMap AJAX loader
   if (request.readyState == 4) {
      if ((request.status != 200) && (request.status != 304)) {
         alert("file not found");
         return;
      }
      var xmlDoc = GXml.parse(request.responseText);
      var markers = xmlDoc.documentElement.getElementsByTagName("marker");
      for (var i=0; i<gmarkers.length; i++) {
         map.removeOverlay(gmarkers[i]); 
      }
      gmarkers = new Array();
      for (var i = 0; i < markers.length; i++) {
         // obtain the attributes of each marker
         var lat = parseFloat(markers[i].getAttribute("lat"));
         var lng = parseFloat(markers[i].getAttribute("lng"));
         var label = markers[i].getAttribute("label");
         var icon = markers[i].getAttribute("icon");
         if (isNaN(lat) || isNaN(lng)) {
            //alert("bad point "+i);
            continue;
         }
         var point = new GLatLng(lat,lng);
         tabInfo = markers[i].getElementsByTagName("tab");
         tabs = new Array();
         if (tabInfo.length > 0) {
            for (var j = 0; j < tabInfo.length; j++) {
               var tabLabel = getNodeValue(tabInfo[j].getElementsByTagName("label"));
               var tabHtml = getNodeValue(tabInfo[j].getElementsByTagName("contents"));
               if ((j==0) && (tabInfo.length > 2)){ //  adjust width if using tabs
                  tabHtml = '<div>' + tabHtml + '</div>';
               }
               tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
            }
         } else { 
            // alert("no tabs point "+i);
            var tabLabel = "Nothing";
            var tabHtml = markers[i].getAttribute("html");
            tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
         }      
         var marker = createTabbedMarker(point,label,tabs, icon);
         bounds.extend(point);
         map.addOverlay(marker);
      }
      map.centerAndZoomOnBounds(bounds);
      document.getElementById("nav_side").innerHTML = side_navbar_html; // populate sidebar info
      side_navbar_html = "";
   }
}
} // end of onLoad function