var EventUtil = new Object;
var preURL = "http://Wibiti.com/";
var preImg = "thumbs/hpmain/";
var isIE = false;
var markers;
var ms = new Array();
var msc = new Array();
var map;
var bounds;

function loadJS(jsFile) {
	var head = document.getElementsByTagName('head').item(0);
	if (head) { 
	  var scriptTag = document.getElementById('dynamoScript');
	  if(scriptTag) { try { head.removeChild(scriptTag); } catch(x) {}   }
	  var script = document.createElement('script');
	  script.src = jsFile;	  
	  script.type = 'text/javascript';
	  script.id = 'dynamoScript';
	  head.appendChild(script);
	}
}

EventUtil.addEventHandler = function (oTarget, sEventType, fnHandler) {
	if (oTarget.addEventListener) { //DOM
		oTarget.addEventListener(sEventType, fnHandler, false);
	} else if (oTarget.attachEvent) { //IE
		oTarget.attachEvent("on" + sEventType, fnHandler);
	} else { //others
		oTarget["on" + sEventType] = fnHandler;
	}
};

EventUtil.removeEventHandler = function (oTarget, sEventType, fnHandler) {
	if (oTarget.removeEventListener) { //DOM
		oTarget.removeEventListener(sEventType, fnHandler, false);
	} else if (oTarget.detachEvent) { //IE
		oTarget.detachEvent("on" + sEventType, fnHandler);
	} else { //others
		oTarget["on" + sEventType] = null;
	}
};

function getMap(result) {
	
	ms = new Array();
	msc = new Array();
	
	map = new GMap2(document.getElementById("map"));
	bounds = new GLatLngBounds
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	
	var xmlDoc2 = result;
	
	if (document.implementation && document.implementation.createDocument)
	{
		var xmlDoc = document.implementation.createDocument("", "", null);
		var xmlParser = new DOMParser();
		xmlDoc = xmlParser.parseFromString(xmlDoc2, 'text/xml');
	}
	else if (window.ActiveXObject)
	{
		isIE = true;
		var xmlDoc = createXMLDOMObj();
		xmlDoc.async="false";
		xmlDoc.loadXML(xmlDoc2);
	}

	//var zlat;
	//var zlng;
	var mct;
		
	//zlat = parseFloat(xmlDoc.childNodes[0].firstChild.getAttribute("zt"));
	//zlng = parseFloat(xmlDoc.childNodes[0].firstChild.getAttribute("zg")) * -1;
	markers = xmlDoc.documentElement.getElementsByTagName("H");
	mct = markers.length;

	map.setCenter(new GLatLng(0,0))
		
	var aryHpLong = new Array(mct);
	var aryHpLat = new Array(mct);
			
	var imgloc;
	var txtA1;
	var txtA2;
	var ic = new GIcon(G_DEFAULT_ICON);
	var toggleCoordCorrect = 1
	for (var i = 0; i < mct; i++) {

		var hpLong = parseFloat(markers[i].getAttribute("g"))
		var hpLat = parseFloat(markers[i].getAttribute("t"))
		
		if (i == 0)
		{
			aryHpLong[i] = parseFloat(hpLong);
			aryHpLat[i] = parseFloat(hpLat);
		}
		else
		{
			for (var j = 0; j <= i; j++)
			{
				if (Math.abs(aryHpLat[j]-hpLat) < .0001 && Math.abs(aryHpLong[j]-hpLong) < .0001)
				{
					hpLat = hpLat*1 + .0005 * toggleCoordCorrect;
					hpLong = hpLong*1 + .0005 * toggleCoordCorrect ;
					toggleCoordCorrect = toggleCoordCorrect * -1;
				}
			}

			aryHpLong[i] = parseFloat(hpLong);
			aryHpLat[i] = parseFloat(hpLat);
		}

		var point = new GLatLng(aryHpLat[i], aryHpLong[i])
		var hpURL = markers[i].getElementsByTagName("U")[0].firstChild.nodeValue;
		
		txtA1 = "<a class='markerLink' href=\"" + preURL + hpURL + "\" target=\"_mWin\">";
		txtA2 = "</a>";
			
		var imgnm = markers[i].getElementsByTagName("m")[0].firstChild.nodeValue;
		if (imgnm.length > 4)
		{
			imgloc = "<img src=\"" + preURL + preImg + imgnm.substr(imgnm.length-3) + "/" + imgnm + ".jpg\" /><br />";
		}
		else
		{
			imgloc = '';
		}
		
		if (isIE) {
			var hVal = markers[i].getElementsByTagName("h").item(0).text;
			var pVal = markers[i].getElementsByTagName("p").item(0).text;
		}
		else {
			var hVal = markers[i].getElementsByTagName("h")[0].firstChild != null ? markers[i].getElementsByTagName("h")[0].firstChild.nodeValue : "";
			var pVal = markers[i].getElementsByTagName("p")[0].firstChild != null ? markers[i].getElementsByTagName("p")[0].firstChild.nodeValue : "";
		}
		
		
		var ht = imgloc + txtA1 + hVal + txtA2 + "<br clear=\"all\" />" + pVal;
		
		ht = '<div class="markerPopup">' + ht + '</div>';
		
		var isSale = true;
		
		var cID = (isIE ? markers[i].getElementsByTagName("y").item(0).text : markers[i].getElementsByTagName("y")[0].firstChild.nodeValue);

		if (cID == 0) cID = 1001;

		ic.image = "http://wibiti.com/search/pics/" + cID + ".png";
		
		var marker = createMarker(point, ht, (ic));
		marker.id = i;
		ms.push(marker);
		msc.push(cID);
		map.addOverlay(marker);

		//loop over markers and extend bounds
		bounds.extend(marker.getLatLng())
	}
		
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
}

function createXMLDOMObj()
{
	var xVersions = ["Microsoft.XmlDom", "MSXML2.DOMDocument", "MSXML2.DOMDocument.2.6", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.5.0", "MSXML3.DOMDocument.5.0"];
	for (var i = 0; i < xVersions.length; i++) {
		try {
			var oXmlDom = new ActiveXObject(xVersions[i]);
			return oXmlDom;
		}
		catch (e) {
		}
	}
	return null;
}

function createMarker(point, info, icn) {
	var marker = new GMarker(point, icn);	
	
	// Show this marker's index in the info window when it is clicked.
	var html = info;
	GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
	});
    return marker;
}

function inArray(ary, fnd) {
	for (i = 0; i < ary.length; i++) {
	if (ary[i]==fnd)
	    return true;
	}
	return false;
}

function cbevt(obj) {
	//alert(map.overlays[2].id);
	//alert(map.overlays[7].id);
	for (var ict = 0; ict < map.overlays.length; ict++) {
		if (obj.value == msc[ict]) {
			if (obj.checked)
			ms[ict].display(true);
			else
			ms[ict].display(false);
		}
	}
}

function chkIt(oID) {
	var strCbox = 'cb' + oID;
	var cbox = document.getElementById(strCbox);
	if (cbox != null) {	cbox.click(); }
}