dojo.require("dojo.lfx.*");
dojo.require("dojo.debug.console");

var map = null;
var gmarkers = new Array();
var i = 0;
/*
function createMarker(point,name,html) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	// save the info we need to use later for the sidebar
	gmarkers[i] = marker;
	//htmls[i] = html;
	// add a line to the sidebar html
	//sidebar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
	i++;
	return marker;
}
*/
function createTabbedMarker(point,label,tabs,icon) {
	var icon = new GIcon();
	icon.image = "/site_media/images/icon_gmap.png";
	icon.shadow = "/site_media/images/iconShadow_gmap.png";
	icon.iconSize = new GSize(43, 38);
	icon.shadowSize = new GSize(43, 38);
	icon.iconAnchor = new GPoint(5, 34);
	icon.infoWindowAnchor = new GPoint(5, 2);

	var marker = new GMarker(point,icon);
	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);
	});
	return marker;
}

function init() {
	dojo.byId("id_text").focus();
	dojo.byId("search_form").ajax.value = "True";
	var x = new dojo.io.FormBind({
	    formNode: dojo.byId("search_form"),
		mimetype: 'text/json',
	    load: function(type, obj, evt) {
			div = dojo.byId("bars");
			dojo.lfx.html.fadeHide(dojo.byId("bar_table"), 1000, dojo.lfx.easeIn, function() {
				div.innerHTML = obj['html'];
				getMapData(obj['xml']);
			}).play();
		},
		error: function(type, error) {
			dojo.debug(error.message);
		}
  	});
  
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(lat,lng), 12);
      }
}

function getMapData(xml) {
	clearMarkers();
	node = GXml.parse(xml);
	var bars = node.documentElement.getElementsByTagName("bar");
	for (var i = 0; i < bars.length; i++) {
		bar = bars[i];
		var name = bar.getAttribute("name");
		var lat = parseFloat(bar.getAttribute("lat"));
		var lng = parseFloat(bar.getAttribute("lng"));
		var id = bar.getAttribute("id");
		var point = new GLatLng(lat,lng);
		
		tabDom = bar.getElementsByTagName("tab");
        tabs = new Array();
        if (tabDom.length > 0) {
			for (var j = 0; j < tabDom.length; j++) {
				var tabLabel = getNodeValue(tabDom[j].getElementsByTagName("label"));
				var tabHtml = getNodeValue(tabDom[j].getElementsByTagName("contents"));
				if ((j==0) && (tabDom.length > 2)) {
					tabHtml = '<div style="width:' +tabDom.length * 88 + 'px">' + tabHtml + '</div>';
				}
				tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
			}
        }
        if (!isNaN(lat)) {
			var marker = createTabbedMarker(point,id,tabs);
			gmarkers[i] = marker;
			map.addOverlay(marker);
			 //trying to center the map on the first bar
			if (i == 0) {
				map.setCenter(new GLatLng(lat, lng), 12);
			}
			
		}
	}
}

function clearMarkers() {
	for (m = 0; m < gmarkers.length; m++) {
		map.removeOverlay(gmarkers[m]);
	}
}

function focus_on_marker(markerId) {
	clickedMarker = gmarkers[markerId];
	clickedMarker.openInfoWindowTabsHtml(gmarkers[markerId].tabs);
}

function getNodeValue(Element) {
	if ((Element.length>0) && Element[0] && Element[0].firstChild && Element[0].firstChild.nodeValue) {
	   return Element[0].firstChild.nodeValue;
	}
}
	
dojo.addOnLoad(init);

