
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 onLoad() {
	var args = getArgs();
	if (args.zip) {
	z = args.zip;
	if (doZipMap(z, true))
	    setTitle("Web Pages in ZIP code " + z);
	}
	else {
	noZipQS();
	}
}

function newZIP() {
	var zctxt = document.getElementById("zc");
	if (zctxt != null) {
	if (doZipMap(zctxt.value, false))
  	    setTitle("Web Pages in ZIP code " + zctxt.value);
	}
}

function noZipQS() {
	chgZBtn("Get ZIP");
}

function chgZBtn(words) {
	var zb = document.getElementById("zbtn");
	if (zb != null) {
	zb.value = words;
	}
	
}

function zipOK(zcode) {
	if (zcode.length > 5) {
	alert('The ZIP code you entered is too long.');
	return false;
	}
	if (zcode.length < 5) {
	alert('The ZIP code you entered is too short.');
	return false;
	}
	for (var l = 0; l < 5; l++) {
	var m = parseInt(zcode.charAt(l));
	if (isNaN(m)) {
	    alert('The ZIP code you entered is not a valid ZIP code.  ZIP codes must be numeric.');
	    return false;
	}
	}
	return true;
}

function updateZBox(zcode) {
	var zbox = document.getElementById("zc");
	if (zbox != null)
  	zbox.value = zcode;
}

function clearAll() {
	clearIt("map");
	clearIt("tblLegend");
}

function clearIt(obj) {
	var o = document.getElementById(obj);
	if (o != null) {	
	if (!(o.rows)) {
	    o.innerHTML = "";
	}
	else {
	    clearTbl(o);
	}
	}
}

function clearTbl(obj) {
	var rs = obj.rows.length;
	for (var r = 0; r < rs; r++) {
	obj.deleteRow(0);
	}
}

function setTitle(words) {
	document.title = words;
}

function getMap(result) {
	
	var ddlSubs = document.getElementById('ddlSubs');
	var ddlAds = document.getElementById('ddlAds');
	var ddlDays = document.getElementById('ddlDays');
	var ddlArea = document.getElementById('ddlArea');
	var ddlCity = document.getElementById('ddlCity');
	var chkAdjZips = document.getElementById('chkAdjZips');
	var chkOpens = document.getElementById('chkOpens');
	var chkNewConst = document.getElementById('chkNewConst');
	var ddlRangeMin = document.getElementById('ddlRangeMin');
	var ddlRangeMax = document.getElementById('ddlRangeMax');
	var divGrid = document.getElementById('divGrid');
	
	var opens = 0;
	var adjzips = 0;
	var newconst = 0;
	var min = 0;
	var max = 0;
	var adID = 0;
	var catID = 0;
	
	if (ddlAds != null) 
	{
		adID = ddlAds.value
	}
	else 
	{
		adID = ADS_ID_SERVICE 
		catID = ddlSubs.value
	}
	
	if (chkAdjZips.checked) adjzips = 1;
	if (chkOpens != null) if (chkOpens.checked) opens = 1;
	if (chkNewConst != null) if (chkNewConst.checked) newconst = 1;
	
	if (ddlRangeMin != null)
	{
		min = ddlRangeMin.value;
		max = ddlRangeMax.value;
		
		if (((min == 0) && (max==1000000000)) || ((min=='') && (max=='')))
		{
			min = 0;
			max = 0;
		}
	}
		
	if (typeof(result) == 'number')
	{		
		if (result == 0)
		{
			var url =  'http://' + getServiceHost() + 'get.asmx/getMap?vid=' + VEND_ID_SERVICE + '&adid=' + adID + '&cid=' + catID + '&s=0&r=' + REGION_ID_SERVICE + '&aid=' + ddlArea.value + '&cn=' + ddlCity.value + '&z=0' + '&min=' + min + '&max=' + max + '&o=' + opens + '&az=' + adjzips + '&nc=' + newconst + '&d=' + ddlDays.value + '&qs=0';	
			loadMapXMLDoc(url);
			setSubscribeLinkRSS(url);
		}
		else {}
	}
	
	else
	
	if (typeof(result) == 'object')
	{
		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;
			xmlParser = new DOMParser();
			var xmlText = (new XMLSerializer()).serializeToString(xmlDoc2);
			var xmlText2 = xmlText.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/<\?xml version="1.0" encoding="utf-8"\?>/gi, "").replace(/<\?xml version="1.0"\?>/gi, "");
			xmlDoc = xmlParser.parseFromString(xmlText2, 'text/xml');
		}
		else if (window.ActiveXObject)
		{
			isIE = true;
			var xmlDoc = createXMLDOMObj();
			xmlDoc.async="false";
			var xmlText = xmlDoc2.xml.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/<\?xml version="1.0" encoding="utf-8"\?>/, "").replace(/<\?xml version="1.0"\?>/, "");
			xmlDoc.loadXML(xmlText);
		}
	
		//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;
		
		//initialize the map
		map.setCenter(new GLatLng(0,0))

		var aryHpLong = new Array(mct);
		var aryHpLat = new Array(mct);
		
		setSpanResults(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);
			ic.image = "http://search.wibiti.com/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 drawTallLegend() {
	var ci = new Array();
	var cn = new Array();
	var mct = markers.length;
	var ct = 0;
	
	for (var x = 0; x < mct; x++) {
	var cid = markers[x].getElementsByTagName("y")[0].firstChild != null ? markers[x].getElementsByTagName("y")[0].firstChild.nodeValue : "";
	
	var cp = markers[x].getElementsByTagName("c2")[0].firstChild != null ? markers[x].getElementsByTagName("c2")[0].firstChild.nodeValue : "";
	
	if (!(inArray(ci, cid))) {
	    ct++;
	    ci.push(cid);
	    var n1 = (cp=='' ? '' : cp + ' - ');
	    cn.push(n1 + (markers[x].getElementsByTagName("c1")[0].firstChild != null ? markers[x].getElementsByTagName("c1")[0].firstChild.nodeValue : ""));
	}
	}
	var legend = document.getElementById("tblLegend");

	var i = 0;
	
	var r = legend.insertRow(legend.rows.length);
	var c = r.insertCell(r.cells.length);
	c.colSpan = "3";
	if (mct > 0) {
	c.align = "center";
	c.innerHTML = "<b>Legend</b>";
	
	for (var i = 0; i < ci.length; i++) {
	    var r = legend.insertRow(legend.rows.length);
	    var c = r.insertCell(r.cells.length);
	    c.vAlign = "middle";
	    c.innerHTML = cn[i];
	    var c = r.insertCell(r.cells.length);
	    c.vAlign = "middle";
	    c.innerHTML = "<img src='http://search.wibiti.com/pics/" + ci[i] + ".png' alt='icon for " + cn[i] + "' onclick='chkIt(\"" + ci[i] + "\");' />"; 
	    var c = r.insertCell(r.cells.length);
	    c.vAlign = "middle";
	    if (isIE) {
	    var cb = document.createElement("<INPUT Type='checkbox' CHECKED onClick='cbevt(this);' value='" + ci[i] + "' id='cb" + ci[i] + "' name='cb" + ci[i] + "'>");
	    }
	    else {
   	    var cb = document.createElement("INPUT");
	    cb.type = "checkbox";
	    cb.id = 'cb' + ci[i];
	    cb.name = 'cb' + ci[i];
	    cb.value = ci[i];
	    cb.setAttribute('onclick', 'cbevt(this);');
	    cb.defaultChecked = true;
	    }
	    c.appendChild(cb);

	}
	}
	else
	{
	c.innerHTML = "There are currently no Web pages in the ZIP code.";
	}  

	//alert(legend.innerHTML);
}

function chkIt(oID) {
	var strCbox = 'cb' + oID;
	var cbox = document.getElementById(strCbox);
	if (cbox != null) {
	cbox.click();
	}
	
}

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 inArray(ary, fnd) {
	for (i = 0; i < ary.length; i++) {
	if (ary[i]==fnd)
	    return true;
	}
	return false;
}

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 getArgs() {
    var args = new Object();
    var query = location.search.substring(1);
    var pairs = query.split(",");
    for (var i = 0; i < pairs.length; i++) {
    var pos = pairs[i].indexOf('=');
    if (pos == -1) continue;
    var argname = pairs[i].substring(0,pos);
    var value = pairs[i].substring(pos+1);
    args[argname] = unescape(value);
    }
    return args;
}

function getMapGridMashup(vend,ad,cat,region)
{
	if ((! region > 0) || (region == 1038)) region = -1
	//alert(region);
	
	var url = 'http://' + getServiceHost() + '/get.asmx/searchService_ads?vendID=' + vend + '&adID='+ ad + '&catID=' + cat + '&s=0&r=' + region + '&z=0&url=' + location.host; 
	var jsi  = "<" + "script type='text/javascript'" 
		jsi += " src='" + unescape(url) + "'></" + "script>"; 
	document.write(jsi);
}

function getMapGridMashupForHN(vend,ad,cat,region)
{
	var url = 'http://' + getServiceHost() + 'get.asmx/searchServiceHN?vendID=' + vend + '&adID='+ ad + '&catID=' + cat + '&s=0&r=' + region + '&z=0&url=' + location.host; 
	var jsi  = "<" + "script type='text/javascript'" 
		jsi += " src='" + unescape(url) + "'></" + "script>";
	//alert(jsi);
	document.write(jsi);
}

function getYoChicagoMashup(vend, ad, cat, region)
{
	var host = location.host;
	var pathname = location.pathname
	var path = '';
	
	if (pathname.indexOf('/guides/') > -1) path = 'guides';
	if (pathname.indexOf('/search/') > -1) path = 'search';
	
	
	var url = 'http://' + getServiceHost() + 'get.asmx/YoChicagoMashup?vendID=' + vend + '&adID='+ ad + '&catID=' + cat + '&s=0&r=' + region + '&z=0&url=' + host + '&path=' + path;
	var jsi  = "<" + "script type='text/javascript'" 
	jsi += " src='" + unescape(url) + "'></" + "script>";	
	document.write(jsi);
}
