<!--
   var map = null;
   var mapExtension, overlays;
   var dynamicMap;
   var livestockMap;
   //var crimeMap, imageryMap
   var l;
   var mapevents = "crimes";
   
    var gmarkers = [];
    var originalcolor = null;
	var BaseIcon;
    var geoXml = null;

	var mapLeft = null;
	var mapRight = null;
	var mapTop = null;
	var mapBottom = null;
	var blnBtnClickFlag = false;

    var lastrequest = '';
	var no_update = 0;
	var qryname = '';
	
    var markercount = 0;
    var markerimage = "";
	 
	//use this switch for testing locally vs. production
    var sourcedir = "";

var moves = 0;
var backStack = [];	 
var backStackIndex2 = 0;

    var mapCrimeMappingURL = "https://maps.jocogov.org/ArcGIS/rest/services/Secure/CrimeMappingSecure/MapServer"

var lastrequesturl = "";	 

   function loadMap()
   {
	try {
		loadGoogleMap();
		}
	catch (err){
		}
   }

   
	function loadGoogleMap() {
		if (GBrowserIsCompatible()) {
			BaseIcon = new GIcon();
			BaseIcon.image = "images/person.png"
			BaseIcon.shadow = "images/shadow50.png";
			//BaseIcon.iconSize = new GSize(20, 34);
			//BaseIcon.shadowSize = new GSize(37, 34);
			//BaseIcon.iconAnchor = new GPoint(6, 22);
			BaseIcon.iconAnchor = new GPoint(9, 34);
			BaseIcon.infoWindowAnchor = new GPoint(9, 2);
			BaseIcon.infoShadowAnchor = new GPoint(18, 25);

			//map = new GMap2(document.getElementById("map"));
            
            map = new GMap2(document.getElementById("map"));
            	map.enableDoubleClickZoom();    
	            map.enableScrollWheelZoom();                     
	            map.enableContinuousZoom();	

			//map.clearOverlays();

    			map.addControl(new GLargeMapControl3D());

            if (agency != "sexoffenders") {
                //map.addControl(new GNavLabelControl());
	    		map.addControl(new GScaleControl());
            }
            
            if (agency == "jccomp") {
                map.addControl(new GHierarchicalMapTypeControl());
                map.addControl(new GOverviewMapControl(false));
                setupDragZoom();
                map.setUIToDefault();
            }
            
            if (agency == "sexoffenders") {
//	    		map.addControl(new GSmallMapControl());
    		//	map.removeControl(new GSmallMapControl());
                map.addControl(new GHierarchicalMapTypeControl());
            }

            if (agency == "jcso" || agency=="opd") {
                setupDragZoom();
    			}

			map.setCenter(new GLatLng(mapcenterX, mapcenterY), mapzoomscale);
			
            //set min zoom scales
            G_NORMAL_MAP.getMinimumResolution = function () { return 9 }; 
            G_SATELLITE_MAP.getMinimumResolution = function () { return 9 }; 
            G_HYBRID_MAP.getMinimumResolution = function () { return 9 }; 
            G_PHYSICAL_MAP.getMinimumResolution = function () { return 9 }; 

            //firefox events defined as e and not event
			moveend = GEvent.addListener(map, "moveend", function() {if (typeof(e)!="undefined") {var evtobj=e;} else {var evtobj=window.event;}; UpdateMap(evtobj,this)});
			
			//close the popup on polygon overlay id
			GEvent.addListener(map, "click", function(overlay) {
			       if (overlay instanceof GPolygon) {
			          map.closeInfoWindow();
			       }});
			
	        geocoder = new GClientGeocoder();

			if 	(typeof esri=="undefined") {
            } else {
                mapExtension = new esri.arcgis.gmaps.MapExtension(map);
                if (agency=="jccomp") {
   	    		    addmapserverlayers2()
                } else  {
   			        addmapserverlayers(agency)
                }
            }
        }
	}

    function setupDragZoom() { 
        // first set of options is for the visual overlay.
        var boxStyleOpts = { opacity: 0.0, border: "1px solid red" };  
        
        // second set of options is for everything else
        var otherOpts = { 
        buttonHTML: "<img title='Click to activate drag zoom in' src='images/zoomin.gif' />", 
        buttonZoomingHTML: "<img title='Drag a region on the map to zoom to' src='images/zoominactive.gif' />", 
        buttonStartingStyle: {width: '24px', height: '24px'}, 
        overlayRemoveTime: 1500,  
        backButtonHTML: '<img title="Zoom Back Out" src="images/zoomout.gif">',  
        backButtonStyle: {display:'none',marginTop:'5px',width:'24px', height:'24px'},
        backButtonEnabled: true };
              
        // third set of options specifies callbacks
       //var callbacks = '' //{ buttonclick: function(){GLog.write("Looks like you activated DragZoom!")}, 
            //dragstart: function(){GLog.write("Started to Drag . . .")}, 
            //dragging: function(x1,y1,x2,y2){GLog.write("Dragging, currently x="+x2+",y="+y2)}, 
            //dragend: function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){GLog.write("Zoom! NE="+ne+";SW="+sw)} };  

        map.addControl(new DragZoomControl(boxStyleOpts, otherOpts),  
        new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(24, 210)));

        //map.addControl(new BackForwardControl(boxStyleOpts, otherOpts),  
        //new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(24, 300)));
        }  

	function OnMapClick(e) {
		//map.RemovePushpin('targetpin');
	    //map.AddPushpin('targetpin',e.view.latlong.latitude, e.view.latlong.longitude,14,15,'',
		//'<img src="target.gif" width="14" height="15"/>', 24);
	}
   
	function GetXmlHttp()
    {
        var x; // = null;
        try {
			// Opera 8.0+, Firefox, Safari
				x = new XMLHttpRequest();
			} 
			catch (e)
			{
				try
				{
					x = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e)
				{
					try
					{
						x = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch (e)
					{
						x = null;
					}            
				}
			}
        
        //if (!x && typeof XMLHttpRequest != "undefined")
        //{
        //    x = new XMLHttpRequest();     
        //}

        return x;
    }
    
    function DisplayQueryResults(element, htmlResult) {
		document.getElementById(element).innerHTML = ''
		document.getElementById(element).innerHTML = (htmlResult);	
//alert(element + '2 - ' + document.getElementById(element).innerHTML);
//alert(element + '1 - ' + htmlResult);
	}
	
    function ajaxGetMoreInfo(element,pagename,async)
    {    
    if (async!=false) {
            async=true;
        }
  
        //Update the message area to give the user a status.
        if (element != 'divResults') {
            document.getElementById(element).innerHTML = "&nbsp;&nbsp;Loading...";
        } else {
            //document.getElementById(element).innerHTML = "<span style='margin-left:50px;>&nbsp;&nbsp;Beginning search...please wait&nbsp;&nbsp;<img src=../images/ajaxwaitsmall.gif></span>";
            var waitmsg = ""
            waitmsg = "&nbsp;&nbsp;Beginning search...please wait&nbsp;&nbsp;<img src=../images/ajaxwaitsmall.gif>";
            //waitmsg = waitmsg + "<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<span style=color:red>Due to very high usage, wait times are longer than expected.</span>";      
            document.getElementById(element).innerHTML = waitmsg;
            //document.getElementById('spanwait').style.display='block';
        }
        //alert(element);

       //Built the url to call the server
		var url = pagename;
        url += "&api=" + strAPI;
        
		var bustcacheparameter = "";
		bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()

        if (url.indexOf("element=divResults")>-1) {
  	        url = url+bustcacheparameter;
        }
        
        //Start by getting the appropriate XMLHTTP object for the browser
        if (!xmlhttp)
            var xmlhttp = GetXmlHttp();
        else if (xmlhttp.readyState != 0)
            xmlhttp.abort(); 

        //If we have a valid xmlhttp object
        if (xmlhttp)
        {
            xmlhttp.open("GET", url, async);  // varAsync = true;

            //Set the callback.  This function is called when we 
            xmlhttp.onreadystatechange = function()
            {
		if (xmlhttp.readyState == 4)  //4 is a success
                {
                    //alert(url);
                    //execute using eval()
                    var result = xmlhttp.responseText;
                    //alert(result);
                    eval(result);
                }
            }
            
            xmlhttp.send(null);
        }
    }
    
    
//    function ajaxGetXML(requestUrl, fn, async) {
//        if (async!=false) {
//            async=true;
//        }

////	    SendAjaxReq(requestUrl, HandleResponse)
//        if (!xmlhttp)
//            var xmlhttp = GetXmlHttp();
//        else if (xmlhttp.readyState != 0)
//            xmlhttp.abort(); 

//    var readystate = "";
//    if (xmlhttp) {
//        xmlhttp.onreadystatechange = function() {
//            readystate += xmlhttp.readyState + ", ";
//            if (xmlhttp.readyState == 4) {
//                fn(xmlhttp)
//            }
//        }
//        xmlhttp.open("GET", requestUrl, async);
//        //XmlR.setRequestHeader('Content-Type', "text/xml");
////        XmlR.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
//        xmlhttp.send();
//        //logAjaxRequest(requestUrl + " - " + readystate)
//    }
//}

function HandleResponse(XmlReq) { 
    if (XmlReq.readyState == 4) {
        if (XmlReq.status == 200) {

            var xmlDoc = getXMLDoc(XmlReq);
            // Fill the cleared Datagrid with new XML Reponse
            if (xmlDoc.getElementsByTagName("Dates")[0] != null) {
                FillDatesList(xmlDoc);
            }
//            else //if (newXmlReq.responseXML.getElementsByTagName("Agency")[0] != null)
//            {
//                ClearTable('clients');
//                FillTableClient(xmlDoc);
//            }

            xmlDoc = null;
        }
        else {
            showAjaxError()
        }
    }
}

function getXMLDoc(XmlReq) {
    //IE
        //    alert(XmlReq.responseText);

    if (window.ActiveXObject) {
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(XmlReq.responseXML.xml);
        //xmlDoc.loadXML(XmlReq.responseText);
    }
    // code for Mozilla, Firefox, Opera, etc.
    else {
        var parser = new DOMParser();
        var xmlDoc = parser.parseFromString(XmlReq.responseText, "text/xml");
    }
    //alert(xmlDoc.xml);
    return xmlDoc;
}

function CreateXmlReq() {

    var XmlReq;
    try {
        // Opera 8.0+, Firefox, Safari
        XmlReq = new XMLHttpRequest();
    }
    catch (e) {
        try {
            XmlReq = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                XmlReq = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                XmlReq = null;
            }
        }
    }

    if (!XmlReq && typeof XMLHttpRequest != "undefined") {
        XmlReq = new XMLHttpRequest();
    }
    if (XmlReq)
        return XmlReq;
}

function SendAjaxReq(requestUrl, fn, XmlR) {
    var readystate = "";
    if (XmlR) {
        XmlR.onreadystatechange = function() {
            readystate += XmlR.readyState + ", ";
            if (XmlR.readyState == 4) {
                fn(XmlR)
            }
        }
        XmlR.open("GET", requestUrl, true);
        //XmlR.setRequestHeader('Content-Type', "text/xml");
        //XmlR.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        XmlR.send();
//        logAjaxRequest(requestUrl + " - " + readystate)
        }
}

function GetBookmarks(userid) {
    ajaxreqPageName = sourcedir + "getCrimeData.aspx?query=GetBookmarks&user="+userid;
    var requestUrl = ajaxreqPageName //+ "request=GetBookmarks";
    requestUrl += (ajaxreqPageName.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
    XmlReq = CreateXmlReq();
    SendAjaxReq(requestUrl, HandleGetBookmarks, XmlReq)
    return;
}
function DeleteBookmarks(id) {
    ajaxreqPageName = sourcedir + "getCrimeData.aspx?query=DeleteBookmarks&user="+userid+"&id="+id;
    var requestUrl = ajaxreqPageName
    requestUrl += (ajaxreqPageName.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
    XmlReq = CreateXmlReq();
    SendAjaxReq(requestUrl, HandleSetBookmarks, XmlReq)
    return;
}

function SetBookmark(userid) {
//if (lastrequesturl!="")
    lastrequesturl=lastrequesturl.replace(/&/g, "!")
    lastrequesturl=lastrequesturl.replace(/[?]/g, "!")
    
    lastrequesturl += "!mapCenter=" + map.getCenter().lat() + "," + map.getCenter().lng();
    lastrequesturl += "!mapZoom=" +map.getZoom();
    //alert(lastrequesturl)
    ajaxreqPageName = sourcedir + "getCrimeData.aspx?query=SetBookmark&user="+userid+"&name="+document.getElementById('tbBookmarkName').value+"&parms="+lastrequesturl;
    ajaxreqPageName += (ajaxreqPageName.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();

    var requestUrl = ajaxreqPageName
    XmlReq = CreateXmlReq();
    //alert(requestUrl);
    SendAjaxReq(requestUrl, HandleSetBookmarks, XmlReq)
    //setTimeout(GetBookmarks(1), 500);
    return;
}

function LoadBookmark(parms) {
    var temp = new Array()
    temp = parms.split("!")

    for (var i = 0; i < temp.length; i++) {
        if (temp[i].indexOf("mapCenter")>=0) {  
            mapc = temp[i].substring(temp[i].indexOf("=")+1, temp[i].length);
            tmp = mapc.split(",")
            var point = new GLatLng(tmp[0], tmp[1]);
        }  
        if (temp[i].indexOf("mapZoom")>=0) {  
            mapz = temp[i].substring(temp[i].indexOf("=")+1, temp[i].length);
        }  
    }
            //38.98596681992875,-94.77682113647461
			map.setCenter(new GLatLng(point.lat(), point.lng()), parseFloat(mapz));
//			map.setCenter(new GLatLng(38.98596681992875,-94.77682113647461), 15);
//			map.setCenter(new GLatLng(mapc), parseFloat(mapz));
}

function HandleSetBookmarks(XmlReq) {
	if(XmlReq.readyState == 4)
	{
		if(XmlReq.status == 200) {
            GetBookmarks(userid)
		}
	}
}

function HandleGetBookmarks(XmlReq) {
	if(XmlReq.readyState == 4)
	{
		if(XmlReq.status == 200) {

		    var xmlDoc = getXMLDoc(XmlReq);
            //alert(XmlReq.responseXML.documentElement.xml);
            txt = "";
            tablerecs = xmlDoc.getElementsByTagName("Table");
            txt += "<table cellspacing=0 cellpadding=0>"
            for (var i = 0; i < tablerecs.length; i++) {
                txt += "<tr>"
                txt += "<td>"
                txt += "<span class=\'spanLink\' style=\'font-weight:bold;\' onclick=LoadBookmark(\'" + tablerecs[i].getElementsByTagName("BookmarkParms")[0].text + "\')>"
                txt += tablerecs[i].getElementsByTagName("BookmarkName")[0].text
                txt += "</span>"
                txt += "</td>"
                txt += "<td>"
                txt += "&nbsp;&nbsp;&nbsp;&nbsp;<img src=images/delete2.png alt=Remove Bookmark onclick=DeleteBookmarks(" + tablerecs[i].getElementsByTagName("ID")[0].text + ") />"
                txt += "<br />";
                txt += "</td>"
                txt += "</tr>"
            }
            txt += "</table>"
            xmlDoc = null;
            document.getElementById("divBookmarksList").innerHTML = txt;
		}
		else
		{
			//alert("There was a problem retrieving data from the server." );
		}
	}
}


function FillDatesList(xmlDoc) {
    tablerecs = xmlDoc.getElementsByTagName('Table');
    //alert(tablerecs.length);
    
    for (var i = 0; i < tablerecs.length; i++) {
       window.status="Loading Date Range - " + i;
    
        // Create an Option object
        var opt = document.createElement("option");
        document.getElementById("ddlminDate").options.add(opt);
        if (tablerecs[i].getElementsByTagName("MIN")[0].text == "1") {
            opt.selected=true;
        }
        opt.text = tablerecs[i].getElementsByTagName("Description")[0].text;
        opt.value = tablerecs[i].getElementsByTagName("Value")[0].text;

        var opt = document.createElement("option");
        document.getElementById("ddlmaxDate").options.add(opt);
        if (tablerecs[i].getElementsByTagName("MAX")[0].text == "1") {
            opt.selected=true;
        }
        opt.text = tablerecs[i].getElementsByTagName("Description")[0].text;
        opt.value = tablerecs[i].getElementsByTagName("Value")[0].text;
    }
   window.status="";
}

    function QueryCrimeData(query)
    {//alert('done'); return false;
        
        //Update the message area to give the user a status.
        document.getElementById('divResults').innerHTML = "Beginning query...";

        //Built the url to call the server
        var url = sourcedir + "getCrimeData.aspx?";
        url += "query=" + query;
        url += "&api=" + strAPI;
        //alert(url);

        //Start by getting the appropriate XMLHTTP object for the browser
        var xmlhttp = GetXmlHttp();
        
        //If we have a valid xmlhttp object
        if (xmlhttp)
        {
            xmlhttp.open("GET", url, true);  // varAsync = true;
            
            //Set the callback.  This function is called when we 
            xmlhttp.onreadystatechange = function()
            {
                if (xmlhttp.readyState == 4)  //4 is a success
                {
                    alert(xmlhttp.responseText);
                    //Server code creates javascript "on the fly" for us to
                    //execute using eval()
                    var result = xmlhttp.responseText;
                    eval(result);
                }
            }
            
            xmlhttp.send(null);
        }
    }

    function showAddress(address) {
        if (address == 'search for address' || address == '') {
            alert('You must enter an address to search for.')
            return false
        }
      if (geocoder) {
        geocoder.getLatLng(
          address+' '+city+', KS',
          function(point) {
            if (!point) {
			  //document.getElementById('address').value=address + " not found"
              alert(address + " not found");
            } else {
            
    	        GEvent.removeListener(moveend);
                
                map.setCenter(point, 15);

                no_update=1;
                UpdateMap(null, document.getElementById('btnAddrSearch'));

                setTimeout("moveend = GEvent.addListener(map, 'moveend', UpdateMap);",100);

              //var marker = new GMarker(point);
              //map.addOverlay(marker);
              //marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }

function mapZoomToPoint(x,y,zoomlevel) {
            if (zoomlevel==null) {
                zoomlevel=14;
                y = y+0.006;
            }
            var point = new GLatLng(x, y+.006);
            map.setCenter(point, zoomlevel);
}

	//prevent the address search text box from firing submit event
	function noenter() {
		//if enter is pressed, just do the search and update map
		if (window.event.keyCode==13)
		{
			if (window.event.srcElement.id=='tbAddrSearch')
    			showAddress(document.getElementById('tbAddrSearch').value);
			if (window.event.srcElement.id=='tbNameSearch'||window.event.srcElement.id=='tbCitySearch')
                searchName(event,this)
		}
		return !(window.event && window.event.keyCode == 13); 
	}

function addmapserverlayers(agency) {
        if (typeof dynamicMap == "undefined") {
            var layerDefs = [];
            layerDefs[5] = "Name = '" + city +"'";

            if (agency=="johnsoncounty") {
//                layerDefs[1] = "Name not like '% twp'";
            }
            if (agency=="jcso") {
                layerDefs[5] = "Name = ''";
            }
            if (agency=="jccomp") {
                //layerDefs[2] = "(Name = 'Olathe' OR Name = 'Leawood' OR Name = 'Merriam' OR Name = 'Mission' OR Name = 'De Soto')";
                //layerDefs[2] = "Name IN ('Olathe','Leawood','Merriam','Mission','De Soto','Edgerton','Gardner')";
            }

            var token = document.getElementById("hfToken").value;

            //if (dynamicMap == null) {
            imageParams = new esri.arcgis.gmaps.ImageParameters();
            imageParams.format = "png";
            imageParams.transparent = true;
            imageParams.layerIds = null;  //[0,25];  //, 1, 2, 3, 4];
            //layerDefs routes
            imageParams.layerDefinitions = layerDefs;

//                dynamicMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://maps.jocogov.org/ArcGIS/rest/services/CrimeMapping/MapServer", imageParams, .8, dynmapcallback);
                dynamicMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(mapCrimeMappingURL + "?token=" + token, imageParams, .8, dynmapcallback);
                if (city == "merriam") {   
                    dynamicMap.setVisibleLayers([4,5,44]);  //[28]);
                } else {
                    dynamicMap.setVisibleLayers([4,5]);  //[28]);
                }

            //create an identify task
            if (agency=="jccomp") {
                identifyTask = new esri.arcgis.gmaps.IdentifyTask(mapCrimeMappingURL + "?token=" + token);
                //identifyTask = new esri.arcgis.gmaps.IdentifyTask("http://admsaimims03/ArcGIS/rest/services/Secure/Daycare/MapServer");
                //register click event listener for the map
                if (l==undefined) {
                    l = GEvent.addListener(map, "click", identify);
                    //GEvent.removeListener(l);
                   }
            }
        }
        }

        function dynmapcallback(mapservicelayer) {
            map.addOverlay(mapservicelayer);
        }

function addmapserverlayers2() {
//            var layerDefs = [];
//            layerDefs[2] = "Name = '" + city +"'";

            imageParams = new esri.arcgis.gmaps.ImageParameters();
            imageParams.format = "png";
            imageParams.transparent = true;
//            imageParams.layerIds = null;  //[0,25];  //, 1, 2, 3, 4];
//            imageParams.layerDefinitions = layerDefs;

            //aimsBaseMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://maps.jocogov.org/ArcGIS/rest/services/BaseMap/MapServer", imageParams, .85, dynmapcallback);
            //aimsBaseMap.setVisibleLayers([-1]);  //[28]);

            densityMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://maps.jocogov.org/ArcGIS/rest/services/DensityLayers/MapServer", imageParams, .6, dynmapcallback);
            densityMap.setVisibleLayers([-1]);  //[28]);

            var token = document.getElementById("hfToken").value;
            crimeMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(mapCrimeMappingURL + "?token=" + token, imageParams, .7, dynmapcallback);
            //crimeMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://maps.jocogov.org/ArcGIS/rest/services/CrimeMapping/MapServer", imageParams, .7, dynmapcallback);
            crimeMap.setVisibleLayers([4]);  //[28]);
            dynamicMap = crimeMap;

            landmarksMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://maps.jocogov.org/ArcGIS/rest/services/Landmarks/MapServer", imageParams, .5, dynmapcallback);
            landmarksMap.setVisibleLayers([0]);  //[28]);

            //var token = "7FWDfZizo_P7DRcJpqXdmntheHudAS-7rQCjrVsCrXYaGxCv2nKtYGGdWtQhzoMCpBMIxBrtAvRfStwMzCxe9w.."
//            var mapServiceURL = "https://maps.jocogov.org/ArcGIS/rest/services/Secure/CrimeMappingSecure/MapServer" + "?token=" + token;
//            livestockMap = new esri.arcgis.gmaps.DynamicMapServiceLayer(mapServiceURL, imageParams, .85, dynmapcallback);
//            livestockMap.setVisibleLayers([-1]);

            //create an identify task
            if (agency=="jccomp") {
                identifyTask = new esri.arcgis.gmaps.IdentifyTask(mapCrimeMappingURL + "?token=" + token);
                //identifyTask2 = new esri.arcgis.gmaps.IdentifyTask(mapCrimeMappingURL + "?token=" + token);
                //register click event listener for the map
                if (l==undefined) {
                    l = GEvent.addListener(map, "click", identify);
                }
            }
            //identifyTask = new esri.arcgis.gmaps.IdentifyTask("http://maps.jocogov.org/ArcGIS/rest/services/Landmarks/MapServer");
            //identifyTask = new esri.arcgis.gmaps.IdentifyTask("http://admsaimims03/ArcGIS/rest/services/Secure/Daycare/MapServer");
            //register click event listener for the map
            //GEvent.addListener(map, "click", identify);
        }



function dynmapcallback(mapservicelayer) {
    map.addOverlay(mapservicelayer);
}

function toggleimagerylayers(blnVisible)
{
            if (blnVisible) {
                imageParams = new esri.arcgis.gmaps.ImageParameters();
                imageParams.format = "jpg";
                imageParams.transparent = true;

                var mapServiceURL = "https://maps.jocogov.org/ArcGIS/rest/services/Secure/ImageryCurrentGoogle/MapServer";
                var token = document.getElementById("hfToken").value;
                aimsCurrentImagery = new esri.arcgis.gmaps.DynamicMapServiceLayer(mapServiceURL + "?token=" + token, imageParams, .9, dynmapcallback);
            } else {
                var aimsCurrentImagery = null
            }
}

    function toggleLayer(obj) {

        id = null
        for (var i = 0; i < arrayLayers.length; i++) {
            if (arrayLayers[i][0]==obj.id) {
                id = arrayLayers[i][3];
                service = arrayLayers[i][2];
            }
        }

        if (service=="crimeMap") {
            service = crimeMap;
        } else if (service=="densityMap") {
            service = densityMap;
        } else if (service=="livestockMap") {
            service = livestockMap;
//        } else if (service=="aimsBaseMap") {
//            service = aimsBaseMap;
        } else if (service=="aimsCurrentImagery") {
            toggleimagerylayers(obj.checked);
            return false;
        } else {
            service = crimeMap;
        }
        

        if (id!=null) {
            var visibleLayers = service.getVisibleLayers();
            for (i = visibleLayers.length-1; i >= 0; i -= 1) {
                if (visibleLayers[i]==id) {
                    visibleLayers.splice(i, 1);
                }
            } 
        
            if (obj.checked) {
                visibleLayers.push(id)
            }

        //alert(visibleLayers);
        service.setVisibleLayers(visibleLayers)
        }
    }

    function toggleMapLayers(lyrdef, obj) {
            if (lyrdef == 'city') {
                    if (obj.checked) {
                        if (dynamicMap!=null) {
                            showmaplayers(5);  //5 is the city layer
//                            addmapserverlayers(agency);
                        } else {
                            addmapserverlayers(agency);
                        }
                } else {
                    hidemaplayers(5); 
                 }
         }
    }

    function showmaplayers(lyr) {
        var lyrs = dynamicMap.getVisibleLayers([]);
        //alert(lyrs);
        var p = 0
        for (i = 0; i < lyrs.length; i++) {
            if (lyrs[i] == lyr) {
//                lyrs.splice(i, 1)
            p = 1;
            }
        }
        if (p==0) {
            lyrs.push(lyr);
        }
        dynamicMap.setVisibleLayers(lyrs);
        //dynamicMap.setVisibleLayers([2]);
    }

    function hidemaplayers(lyr) {
        var lyrs = dynamicMap.getVisibleLayers([]);
            for (i = 0; i < lyrs.length; i++) {
                if (lyrs[i] == lyr) {
                    lyrs.splice(i, 1)
                }
        }
        dynamicMap.setVisibleLayers(lyrs);
    }

	// Creates a marker at the given point with the given number label
//	function createMarker(point, id, desc, icon, zIndex) {
	function createMarker(point, id, desc, icon, rowindex, zIndex) {
		//var marker = new GMarker(point, icon);
        if (typeof zIndex=="undefined") {
            zIndex = 0;
        }

        var marker = new GMarker(point, { icon: icon, zIndexProcess: importanceOrder });
        marker.importance = zIndex; 
        
        gmarkers[id] = marker;
		
		if (agency != 'sexoffenders') {
		    GEvent.addListener(marker, "click", function() {
                //added to move top point to bottom of stack
		        unhighlightResults(id);
		        map.removeOverlay(marker);
                map.addOverlay(createMarker(point, id, desc, icon, rowindex, markercount*-1));
		        //marker.openInfoWindowHtml(desc);
		    });

		    GEvent.addListener(marker, "mouseover", function() {
    		    highlightResults(id, marker);
   		    });
		    GEvent.addListener(marker, "mouseout", function() {
		        unhighlightResults(id, marker, icon.image);
   		    });
		}

		if (agency == 'sexoffenders') {
            //convert id to string
            id = id + ''
	       	//if (id.indexOf("emp")==0) {
    	    // id = id.replace("emp", "");
            //}
		
		    GEvent.addListener(marker, "mouseover", function() {
   		        hiliteoffender("imgOffender",id);
   		        ToggleRowDisplay(id, rowindex);
            });
            
		    GEvent.addListener(marker, "click", function() {
    		    unhiliteoffender(id,icon.image); 
    		    id2 = id.replace("emp", "");
    		    ToggleRowDisplay(id2);
    		    document.getElementById('tr'+id2).style.backgroundColor=originalcolor;
		        map.removeOverlay(marker);
                map.addOverlay(createMarker(point, id, desc, icon, rowindex, markercount*-1));
            });

		    GEvent.addListener(marker, "mouseout", function() {
		    //gmarkers[number].setImage("images/offndrhome.png");
    		    unhiliteoffender(id,icon.image); 
    		    ToggleRowDisplay(id);
    		    id2 = id.replace("emp", "");
    		    if (document.getElementById('tr'+id2)!=null) {
    		        document.getElementById('tr'+id2).style.backgroundColor=originalcolor;
                }
		    });
		}
		
            function importanceOrder(marker, b) {
                return marker.importance;
            }

            markercount++

		return marker;
	}

    function mapRemoveMarkers() {
        if (gmarkers.length > 0) {
            for (i = gmarkers.length - 1; i >= 0; i -= 1) {
                if (gmarkers[i] != null) {
                        map.removeOverlay(gmarkers[i]);
                        gmarkers.splice(i, 1);
                }
            }
        }
    }

    function highlightResults(id, src) {
        var i = gmarkers[id].getIcon()
        markerimage = i.image;
        gmarkers[id].setImage('images/selected.png')
        
        el = "spanresults"+id;
        if (document.getElementById(el)!=null) {
            document.getElementById(el).style.backgroundColor="#FFFFCC";
            document.getElementById(el).style.border="solid 1px #ECECEC";
            if (id >= 1 && src!=null) {
                //document.getElementById("divResults").scrollTop = -30+(id*80);
                //if (navigator.appName!="Netscape") {
                //scrollIntoViewIfOutOfView(el)
//                   document.getElementById(el).scrollIntoView(navigator.appName=="Netscape");
//              alert(navigator.appName!="Netscape");
     document.getElementById(el).scrollIntoView(true);
                //}
            } else {
            }
        }
    }


    function unhighlightResults(id, src, iconimage) {
        if (iconimage==undefined) {
            iconimage = markerimage;
        }
        gmarkers[id].setImage(iconimage);

        el = "spanresults"+id;
        if (document.getElementById(el)!=null) {
                document.getElementById(el).style.backgroundColor="#FFFFFF";
                document.getElementById(el).style.border="solid 1px #FFFFFF";
                if (src!=null) {
                    //document.getElementById("divResults").scrollTop = 0;
                }
            }
    }
    
function scrollIntoViewIfOutOfView(el) {
  var topOfPage = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
  var heightOfPage = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
  var elY = 0;
  var elH = 0;
  if (document.layers) { // NS4
    elY = el.y;
    elH = el.height;
  }
  else {
    for(var p=el; p&&p.tagName!='BODY'; p=p.offsetParent){
      elY += p.offsetTop;
    }
    elH = el.offsetHeight;
  }
  if ((topOfPage + heightOfPage) < (elY + elH)) {
    el.scrollIntoView(false);
  }
  else if (elY < topOfPage) {
    el.scrollIntoView(true);
  }
}
      function googleDrawCityPolyKML()
        {return false;
            var urlCity = "http://ims.jocogov.org/crimemaps/poly" + city+ ".kmz" 
            geoXml = new GGeoXml(urlCity);
            //geoXml = new GGeoXml("Leawood2.kml");
            map.addOverlay(geoXml);  
        }

//      function googleDrawCityPoly(imap,linecolor,weight,opacity)
//      {//superceded with googleDrawCityPolyKML() on 5/21/08
//		//var polyline
//		var points = [];
//		GDownloadUrl("poly" +city + ".xml", function(data, responseCode) 
//		{
//  	
//			var xml = GXml.parse(data);
//  			var markers = xml.documentElement.getElementsByTagName("marker");
//  			for (var i = 0; i < markers.length; i++) {
//    			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
//                            parseFloat(markers[i].getAttribute("lng")));
//				points.push(point);
//				}

//			polyline = new GPolyline(points,linecolor,2);
//			//polyline.name = 'city'
//			//alert(polyline.name);
//			map.addOverlay(polyline);

//     	});

//	}

      function toggleCityBoundary(status)
      {
		if (status == true) {
			if (strAPI == 've') {
				//DrawLeawoodPoly('2',null,1,colorCityBoundary);
				}
			else if (strAPI == 'google') {
				googleDrawCityPolyKML()
				//googleDrawCityPoly(map,'#FF0044','1','0.5');
			}
		}
		else {
			if (strAPI == 've') {
				map.DeletePolyline('2');
				}
			else if (strAPI == 'google') {
				//alert(polyline);
				//map.removeOverlay(polyline);
				map.removeOverlay(geoXml); 
			}
		}
	}

	function Validate(frm, btnName)
	{
		var btn = frm[btnName] //frm[btnName]
		var valid

		for (var x = 0;x < btn.length; x++)
		{
			valid = btn[x].checked
			if (valid) {
				return btn[x].value;
				break
			}
		}
	}
	
	
    function checkDate(sender,args)
        {
            var d = new Date(sender._selectedDate)
            selDate = new Date(d.getMonth()+1+"/"+d.getDate()+"/"+d.getFullYear());
            //      for (var i in sender) {
            //      result = sender[i]
            //      alert(result); 
            //}
            //alert(sender.get_id())

            if (sender.get_id()=="CalendarExtender1") {
                d = new Date(document.getElementById("tbmaxDate").value)
                if (selDate > d) {
                    alert("Date cannot be after the \"to\" date");
                    sender._selectedDate = d;
                    // set the date back to the current date
                    sender._textbox.set_Value(sender._selectedDate.format(sender._format))
                    return false;
                }
            }

            if (sender.get_id()=="CalendarExtender2") {
                d = new Date(document.getElementById("tbminDate").value)
                if (selDate < d) {
                    alert("Date cannot be before the \"from\" date");
                    sender._selectedDate = d;
                    // set the date back to the current date
                    sender._textbox.set_Value(sender._selectedDate.format(sender._format))
                    return false;
                }
            }

//            if (document.getElementById("ddlCrimeTypes").options[document.getElementById("ddlCrimeTypes").selectedIndex].value=='0Calls') {
//                minDtRange = minDateRange;
//                maxDtRange = maxDateRange;
//            } else if (document.getElementById("ddlCrimeTypes").options[document.getElementById("ddlCrimeTypes").selectedIndex].value=='0Traffic') {
//                minDtRange = minDateRange;
//                maxDtRange = maxDateRange;
//            } else {
//                minDtRange = minCrimesDateRange;
//                maxDtRange = maxCrimesDateRange;
//            }

            minDtRange = minDateRange;
            maxDtRange = maxDateRange;
                
            if (selDate > maxDtRange) {
                alert("Data only available between "+formatDate(minDtRange)+" and " + formatDate(maxDtRange));
                sender._selectedDate = maxDtRange;
                // set the date back to the current date
                sender._textbox.set_Value(sender._selectedDate.format(sender._format))
            }

            if (selDate < minDtRange) {
                alert("Data only available between "+formatDate(minDtRange)+" and " + formatDate(maxDtRange));
                sender._selectedDate = minDtRange;
                // set the date back to the current date
                sender._textbox.set_Value(sender._selectedDate.format(sender._format))
            }
    }


    function setDateRange(days) {
        //alert(maxDateRange);
        document.getElementById("tbmaxDate").value = formatDate(maxDateRange)
//    			if (document.getElementById("tbminDate").value != null) {
//                    var d = new Date(document.getElementById("tbminDate").value)
//                    mindate = d.getMonth()+1+"/"+d.getDate()+"/"+d.getFullYear();
//                }
    }


function backSave() {return;
    var backFrame = {};
    backFrame["center"] = map.getCenter();
    backFrame["zoom"] = map.getZoom();
    backFrame["maptype"] = map.getCurrentMapType();
    
if (backStack.length==0) {
    backStack.push(backFrame);
}

if (backStack.length>=1) {
    if (backStack[backStackIndex]["center"]!=backFrame["center"]||backStack.length==1) {
        backStack.splice(backStackIndex,0,backFrame);
        backStackIndex = backStackIndex + 1
    no_update=2;
    }
}

//window.status=backStackIndex;
//alert(no_update) 
}

function zrestoreBackContext() {return;
if (backStackIndex>=1) {
    var backFrame = backStack[backStackIndex-1];
//    t = backStack.pop();
    map.setCenter(backFrame["center"], backFrame["zoom"], backFrame["maptype"]);
    backStackIndex = backStackIndex - 1;
    no_update=2;
//alert(no_update)
    //event.cancelBubble = true;
    //backButtonDiv.innerHTML = backFrame["text"];
    //methodCall = backFrame["methodCall"];
    //if (backStack.length == 0) backButtonDiv.style.display = 'none'; // if we're at the top of the stack, hide the back botton
}
}



	function UpdateMap(e, obj) {
        //backStackIndex2 += 1

        if (no_update==2) {
            no_update=0;
            return false;
        }
	    if (no_update==1) {
            no_update = 2;
        }
        
        //BackForwardControl.prototype.saveBackContext_('', true)
        //backSave();

        //alert(BackForwardControl.prototype.saveMapContext) ;//.G.options.backButtonHTML)

		//find out what the source of the click event is so we can handle appropriately
		//alert(window.event.srcElement.id);
		strEventSource = '';
		var evtobj=window.event? event : e

//        if (obj!=null) {
//            var srcEvt = obj.id;        
//		        if (srcEvt == 'btnUpdateMap' || srcEvt == 'btnAddrSearch' || srcEvt == 'tbAddrSearch') {
//					strEventSource = 'btn';
//					tabSelect(document.getElementById('divTabResults')); 
//					}
//        }
//   		else if (evtobj!=null) {
//		    var srcEvt = evtobj.srcElement.id;
//		    }

  
//        if (document.getElementById('cbDynamicPanning').checked == false) {
//			blnBtnClickFlag = false;
  //      }
        
        if (evtobj!=null) {
//        if (obj!=null) {
            map.closeInfoWindow();
            }

   //     if (e == 'load') {
//			strEventSource = 'btn';
//		    tabSelect(document.getElementById('divTabResults')); 
  //      }
// alert(obj.id);
 //alert(srcEvt);
        if (obj!=null) {
            var srcEvt = obj.id; 
		        if (srcEvt == 'btnUpdateMap' || srcEvt == 'btnAddrSearch' || srcEvt == 'tbAddrSearch') {
					strEventSource = 'btn';
					if (agency=='sexoffenders') {
    					tabSelectOffndr(document.getElementById('divTabResults')); 
					}
					else
					{
	    				tabSelect(document.getElementById('divTabResults')); 
					}
                    //if mindate/maxdate not loaded, wait for half second
                    //if (document.getElementById('ddlmaxDate')==null || document.getElementById('ddlminDate')==null) {
    					//window.setTimeout('',500) 
    				//	}
				}
			}
		else if (evtobj == null)
		    {strEventSource = 'map'}
        else if (evtobj.srcElement == null) 
		    {strEventSource = 'map'}
		else {
		    if (evtobj.srcElement.id == '')
		        {strEventSource = 'map'}
		    else { 
		        if (evtobj.srcElement.id == 'btnUpdateMap' || evtobj.srcElement.id == 'btnAddrSearch' || evtobj.srcElement.id == 'tbAddrSearch') {
					strEventSource = 'btn';
					if (agency=='sexoffenders') {
    					tabSelectOffndr(document.getElementById('divTabResults')); 
					}
					else
					{
	    				tabSelect(document.getElementById('divTabResults')); 
					}
					}
			  };
		    };
		//make sure data has been previously loaded on map event and dynamic updates are on
		if (strEventSource=='btn' || (blnBtnClickFlag && document.getElementById('cbDynamicPanning').checked)) {

			blnBtnClickFlag = true;
			//get the bounding coordinates of the map
			GetMapCoords();
				//create a url to pass to getCrimeData.aspx
//			var url = '../maptest/virtualearth/getCrimeData.aspx?element=QueryResults&query=GetCrimes&type=' + document.getElementById('ddlCrimeTypes').options[document.getElementById('ddlCrimeTypes').selectedIndex].value + '&Dist=' + document.getElementById('ddlDist').options[document.getElementById('ddlDist').selectedIndex].value + '&minDate=' + document.getElementById('ddlminDate').options[document.getElementById('ddlminDate').selectedIndex].value + '&maxDate=' + document.getElementById('ddlmaxDate').options[document.getElementById('ddlmaxDate').selectedIndex].value + '&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom
			esz = ""
			if (document.getElementById('ddlCrimeESZ') != null) {
    			esz = '&esz=' + document.getElementById('ddlCrimeESZ').options[document.getElementById('ddlCrimeESZ').selectedIndex].value
            }
			subdivision = ""
			if (document.getElementById('ddlCrimeESZSubdivision') != null) {
    			esz = '&subdivision=' + document.getElementById('ddlCrimeESZSubdivision').options[document.getElementById('ddlCrimeESZSubdivision').selectedIndex].value
            }
            //alert(esz);
            
            query = "&query=GetCrimes"
            if (mapevents=="crimes") {
                ddl = "ddlCrimeTypes" 
                query = "&query=GetCrimes"
                ddlagency = "ddlCrimeAgencies"
            }
            else if (mapevents=="calls") {
                ddl = "ddlCallTypes" 
                query = "&query=GetCalls"
                ddlagency = "ddlCallAgencies"
            }

            app="";
            fltragncy="";
            if (agency == "jccomp") {
                app = "&app=jccomp"
                if (document.getElementById(ddlagency).selectedIndex>0) {
                    fltragncy = '&agency2=' + document.getElementById(ddlagency).options[document.getElementById(ddlagency).selectedIndex].value
                    }
                }
                
			type = ''
            if (document.getElementById(ddl) != null) {
    			type = '&type=' + document.getElementById(ddl).options[document.getElementById(ddl).selectedIndex].value
	        }
	        if (agency == 'sexoffenders') {
    			type = '&type=0sexoffenders'
	        }
//	        type+="|"+mapevents;
	        
			dist = ''
			if (document.getElementById('ddlDist') != null) {
                dist = '&Dist=' + document.getElementById('ddlDist').options[document.getElementById('ddlDist').selectedIndex].value
			}

			maxrec = ''
			if (document.getElementById('tbmaxrec') != null) {
			    maxrec = document.getElementById('tbmaxrec').value;
			}
			
			mindate = ''
			if (document.getElementById('ddlminDate') != null) {
			    mindate = document.getElementById('ddlminDate').options[document.getElementById('ddlminDate').selectedIndex].value
			} else if (document.getElementById("tbminDate") != null) {
    			if (document.getElementById("tbminDate").value != null) {
                    var d = new Date(document.getElementById("tbminDate").value)
                    mindate = d.getMonth()+1+"/"+d.getDate()+"/"+d.getFullYear();
                }
			}

			maxdate = ''
			if (document.getElementById('ddlmaxDate') != null) {
			    maxdate = document.getElementById('ddlmaxDate').options[document.getElementById('ddlmaxDate').selectedIndex].value
			} else if (document.getElementById("tbmaxDate") != null) {
                if (document.getElementById("tbmaxDate").value != null) {
                    var d = new Date(document.getElementById("tbmaxDate").value)
                    maxdate = d.getMonth()+1+"/"+d.getDate()+"/"+d.getFullYear();
			    }
			}

			mintime = ''
			if (document.getElementById('ddlminTime') != null) {
			    mintime = document.getElementById('ddlminTime').options[document.getElementById('ddlminTime').selectedIndex].value
			}

			maxtime = ''
			if (document.getElementById('ddlmaxTime') != null) {
			    maxtime = document.getElementById('ddlmaxTime').options[document.getElementById('ddlmaxTime').selectedIndex].value
			}

			//var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + '&query=GetCrimes&' + dist + '&minDate=' + document.getElementById('ddlminDate').options[document.getElementById('ddlminDate').selectedIndex].value + '&maxDate=' + document.getElementById('ddlmaxDate').options[document.getElementById('ddlmaxDate').selectedIndex].value + '&minTime=' + document.getElementById('ddlminTime').options[document.getElementById('ddlminTime').selectedIndex].value + '00&maxTime=' + document.getElementById('ddlmaxTime').options[document.getElementById('ddlmaxTime').selectedIndex].value + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency
			if (agency=="jcso") {
                //maxrec = 10;
                var d = new Date();
                d = d - 86400000;
                var yesterday = new Date(d);
                yesterday = yesterday.getMonth()+1 + '/' + yesterday.getDate() + '/' + yesterday.getUTCFullYear();
    		    var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + '&query=GetCrimes&' + dist + '&minDate=' + yesterday + '&maxDate=' + yesterday + '&minTime=' + document.getElementById('ddlminTime').options[document.getElementById('ddlminTime').selectedIndex].value + '00&maxTime=' + document.getElementById('ddlmaxTime').options[document.getElementById('ddlmaxTime').selectedIndex].value + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency+ '&maxrec=' + maxrec + fltragncy
            }			
			
			if (agency=="sexoffenders") {
       			//var url = sourcedir + 'getOffenderData.aspx?element=divResults' + type + esz + '&query=GetCrimes&' + dist + '&minDate=' + mindate + '&maxDate=' + maxdate + '&minTime=' + mintime + '00&maxTime=' + maxtime + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency
       			var url = sourcedir + 'getOffenderData.aspx?element=divResults' + type + esz + '&query=GetCrimes&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency
                //if (document.getElementById('tbNameSearch').value != 'enter last name' && document.getElementById('tbNameSearch').value != '' ) {
           		    if (qryname != '') {
                    	var url = sourcedir + 'getOffenderData.aspx?element=divResults' + type + esz + '&query=GetCrimes&agency=' +agency
//                        url = url + '&name=' + qryname;
                        url = url + qryname;
                        qryname = '';
                    //url = url + '&name=' + document.getElementById('tbNameSearch').value
                    //document.getElementById('tbNameSearch').value = "";
                }
			}

			//commented 6/4/2009
//			if (document.getElementById('ddlminDate') != null && document.getElementById('ddlmaxDate') != null) {
//    			var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + '&query=GetCrimes&' + dist + '&minDate=' + mindate + '&maxDate=' + maxdate + '&minTime=' + mintime + '00&maxTime=' + maxtime + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency+ '&maxrec=' + maxrec
//			}
			if (mindate != "" && maxdate != "") {
			    if (agency=='jccomp') {
    			    var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + query + dist + '&minDate=' + mindate + '&maxDate=' + maxdate + '&minTime=' + mintime + '00&maxTime=' + maxtime + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=&maxrec=' + maxrec + app + fltragncy
                } else {
    			    var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + query + dist + '&minDate=' + mindate + '&maxDate=' + maxdate + '&minTime=' + mintime + '00&maxTime=' + maxtime + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency+ '&maxrec=' + maxrec + app + fltragncy
                }
			}

		//	var url = sourcedir + 'getCrimeData.aspx?element=divResults' + type + esz + '&query=GetCrimes&' + dist + '&minDate=' + document.getElementById('ddlminDate').options[document.getElementById('ddlminDate').selectedIndex].value + '&maxDate=' + document.getElementById('ddlmaxDate').options[document.getElementById('ddlmaxDate').selectedIndex].value + '&minTime=' + document.getElementById('ddlminTime').options[document.getElementById('ddlminTime').selectedIndex].value + '00&maxTime=' + document.getElementById('ddlmaxTime').options[document.getElementById('ddlmaxTime').selectedIndex].value + '00&mapLeft=' + mapLeft + '&mapRight=' + mapRight + '&mapTop=' + mapTop + '&mapBottom=' + mapBottom + '&agency=' +agency

			//prevent cache of request
	    	//var bustcacheparameter
    		//bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
            //map zoom has more than one event - make sure only one ajax request gets sent per map action
            if (new Date().getTime() - lastrequest >= 50) {
                if (document.getElementById('tbTesting')!=null ) {
    			    document.getElementById('tbTesting').innerHTML = url//+bustcacheparameter;
                }
	    		//do ajax request for data points
   		     	//GEvent.removeListener(moveend);
   		     	//alert(url)
                //window.status = (backStackIndex2) + ' - ' + new Date() + ' - ' + (new Date().getTime() - lastrequest);
		    	ajaxGetMoreInfo('divResults', url);
		    	}
            lastrequest = new Date().getTime();
            lastrequesturl = url;
			}
			
			return true
		}

	function GetMapCoords() {
		//alert(strAPI);
		if (document.getElementById('cbLimitByMapExtent').checked && strAPI=='ve') {
			//convert the screen image to lat/lon extents
			var c = document.getElementById("map");
			var UpperLeftPixel = new Msn.VE.Pixel();
			UpperLeftPixel.x = 0;
			UpperLeftPixel.y = 0;
			UpperLeftLatLong = map.PixelToLatLong(UpperLeftPixel.x, UpperLeftPixel.y, map.GetZoomLevel());

			var LowerRightPixel = new Msn.VE.Pixel();
			LowerRightPixel.x = c.offsetWidth;
			LowerRightPixel.y = c.offsetHeight;
			LowerRightLatLong = map.PixelToLatLong(LowerRightPixel.x, LowerRightPixel.y, map.GetZoomLevel());

			mapLeft = UpperLeftLatLong.Longitude;
			mapRight = LowerRightLatLong.Longitude;
			mapTop = UpperLeftLatLong.Latitude;
			mapBottom = LowerRightLatLong.Latitude;
		}
		else if (document.getElementById('cbLimitByMapExtent').checked && strAPI=='google') {
		
			var bounds = map.getBounds()
			var LowerLeftLatLong = bounds.getSouthWest();
			var UpperRightLatLong = bounds.getNorthEast();

			mapLeft = LowerLeftLatLong.lng();
			mapRight = UpperRightLatLong.lng();
			mapTop = UpperRightLatLong.lat();
			mapBottom = LowerLeftLatLong.lat();
		}
		else {
			//otherwise reset the extent variables
			mapLeft = '';
			mapRight = '';
			mapTop = '';
			mapBottom = '';
		}
	}
	
	function remove_class(element) {
	
	}
	
	function add_class(element) {
	
	}
	
	function searchName(evt, obj) {
	    if (obj.id=='btnNameSearch') {
            if (document.getElementById('tbNameSearch').value != 'enter last name' && document.getElementById('tbNameSearch').value != '' ) {
                qryname += '&name=' + document.getElementById('tbNameSearch').value
                }
        } else if (obj.id=='btnCitySearch') {
            if (document.getElementById('tbCitySearch').value != 'enter city name' && document.getElementById('tbCitySearch').value != '' ) {
                qryname += '&city=' +document.getElementById('tbCitySearch').value
                }
        }            
    
    	GEvent.removeListener(moveend);
    	//GEvent.removeListener(zoomend);
        
        no_update=1;
        UpdateMap();

    	//had to put these in a timeout because they were firing on the first name search    	
        setTimeout("moveend = GEvent.addListener(map, 'moveend', UpdateMap);",100);
        //setTimeout("zoomend = GEvent.addListener(map, 'zoomend', UpdateMap);",100);
        
        //moveend = GEvent.addListener(map, "moveend", UpdateMap);
    	//zoomend = GEvent.addListener(map, "zoomend", UpdateMap);
    	
    }
	
	function tabSelect(obj) {
	    var arrTabs = ["divTabResults", "divTabLegend", "divTabHelp", "divTabReports"];
            for (i = 0; i < arrTabs.length; i++) {
                if (document.getElementById(arrTabs[i])!=null) {
                    document.getElementById(arrTabs[i]).className = "divTabUnselect";
                }
            }
		obj.className="divTabSelect";
	    var arrTabs = ["divResults", "divLegend", "divHelp", "divReports"];
            for (i = 0; i < arrTabs.length; i++) {
                if (document.getElementById(arrTabs[i])!=null) {
                    document.getElementById(arrTabs[i]).style.display="none";
                }
            }
        var objid = obj.id
        var divid = objid.replace("Tab", "")
        document.getElementById(divid).style.display="block";

//		document.getElementById('divTabResults').className='divTabUnselect';
//		document.getElementById('divTabLegend').className='divTabUnselect';
//		document.getElementById('divTabHelp').className='divTabUnselect';
//		document.getElementById('divTabReports').className='divTabUnselect';
//		obj.className='divTabSelect';
//		if (obj.id=='divTabResults') {
//			document.getElementById('divResults').style.display='block';
//			document.getElementById('divLegend').style.display='none';
//			document.getElementById('divHelp').style.display='none';
//		}
//		if (obj.id=='divTabLegend') {
//			document.getElementById('divResults').style.display='none';
//			document.getElementById('divLegend').style.display='block';
//			document.getElementById('divHelp').style.display='none';
//			}
//		if (obj.id=='divTabHelp') {
//			document.getElementById('divResults').style.display='none';
//			document.getElementById('divLegend').style.display='none';
//			document.getElementById('divHelp').style.display='block';
//			}
		}

	function tabSelect2(obj) {
	    var arrTabs = ["divTabCalls", "divTabCrimes", "divTabLayers", "divTabOptions","divTabBookmarks"];
            for (i = 0; i < arrTabs.length; i++) {
                document.getElementById(arrTabs[i]).className = "divTabUnselect";
            }
		obj.className="divTabSelect";
	    var arrTabs = ["divCalls", "divCrimes", "divLayers", "divOptions", "divBookmarks"];
            for (i = 0; i < arrTabs.length; i++) {
                document.getElementById(arrTabs[i]).style.display="none";
            }
            document.getElementById("divCallsCrimesCommon").style.display="none";
        var objid = obj.id
        var divid = objid.replace("Tab", "")
        document.getElementById(divid).style.display="block";
        if (divid=="divCalls" || divid =="divCrimes") {
            document.getElementById("divCallsCrimesCommon").style.display="block";
        }
        if (divid=="divCalls") {
            mapevents = "calls"
        } else if (divid=="divCrimes") {
            mapevents = "crimes"
        }
	}

	function tabSelectOffndr(obj) {
        var tabs = new Array('divTabResults', 'divTabSearchNames', 'divTabSearchCity', 'divTabLocateAddress', 'divTabInformation');
        for (i=0;i<tabs.length;i++)
        {
            document.getElementById(tabs[i]).className='divTabUnselect';
        }
	    obj.className='divTabSelect';

        var tabs = new Array('divResults', 'divSearchNames', 'divSearchCity', 'divLocateAddress', 'divInformation');
        for (i=0;i<tabs.length;i++)
        {
            document.getElementById(tabs[i]).style.display='none';
        }

//    			if (moveend != null) {
//    			GEvent.removeListener(moveend);
//    			GEvent.removeListener(zoomend);
//    			}
//    			moveend = GEvent.addListener(map, "moveend", UpdateMap);
//    			zoomend = GEvent.addListener(map, "zoomend", UpdateMap);

		    if (obj.id=='divTabResults') {
			    document.getElementById('divResults').style.display='block';
                document.getElementById('tbNameSearch').value = "";
                document.getElementById('tbCitySearch').value = "";
		    }
		    if (obj.id=='divTabSearchNames') {
			    document.getElementById('divResults').style.display='block';
			    document.getElementById('divSearchNames').style.display='block';
//    			GEvent.removeListener(moveend);
//    			GEvent.removeListener(zoomend);
			    }
		    if (obj.id=='divTabSearchCity') {
			    document.getElementById('divResults').style.display='block';
			    document.getElementById('divSearchCity').style.display='block';
			    }
		    if (obj.id=='divTabLocateAddress') {
			    document.getElementById('divLocateAddress').style.display='block';
			    }
		    if (obj.id=='divTabInformation') {
			    document.getElementById('divInformation').style.display='block';
			    }
		    }

	//toggle default/hand cursor on mouseover and mouseout event
   	function toggleCursor(element) {
	if (document.getElementById(element.id)!= null) {
		if (document.getElementById(element.id).style.cursor!='pointer') {
			document.getElementById(element.id).style.cursor='pointer';
			document.getElementById(element.id).style.background='#F4F4F4';
		}
		else {
			document.getElementById(element.id).style.cursor='default';
			document.getElementById(element.id).style.background='#FFFFFF';
		}
    	}
    }

    function showEmployer(x,y,id)
    {
        //alert(x);
        var point = new GLatLng(x,y)
        var icon = new GIcon(BaseIcon);
        icon.iconsize = new GSize(20,17);
        icon.shadow = 'images/shadow50.png';
        icon.image = 'images/fatality.png';

        createMarker(point, id, '', icon)
        //alert(y);
    
    }

    function unhiliteoffender(id, iconimage)
    {
     gmarkers[id].setImage(iconimage);
     
        if (gmarkers["emp" + id] != null) {
            gmarkers["emp" + id].setImage("images/offndrdefault.png");
        }

        document.getElementById('divOffenderPreview').style.display='none';
        document.getElementById('divLegendPreview').style.display='block';

     }

    function hiliteoffender(el,id)
    {    
        gmarkers[id].setImage('images/persondom.png')
        if (gmarkers["emp" + id] != null) {
            gmarkers["emp" + id].setImage("images/persondom.png");
        }
        //gmarkers["emp"+id].setImage('images/persondom.png')
        
        
        id = id + '';
        id = id.replace("emp", "")
        document.getElementById('imgOffender').src = "";
        //s = 'getOffenderImage.aspx?keycode=0' + id;
        s = '/docs/jims/offenders/' + id + '.jpg';
        //s = 'http://ims.jocogov.org/docs/jims/offenders/' + id + '.jpg';
        document.getElementById('imgOffender').src = s;
        //strid = '0' + id

        //alert(document.getElementById('tr'+id).style.backgroundColor);
        
        if (document.getElementById('tr'+id)!=null) {   
            originalcolor = document.getElementById('tr'+id).style.backgroundColor;
        
                //tmp2 = function() {document.getElementById('tr'+id).style.backgroundColor=originalcolor;}
            
        document.getElementById('tr'+id).onmouseout=function() {document.getElementById('tr'+id).style.backgroundColor=originalcolor;}
        document.getElementById('tr'+id).style.backgroundColor='#FFFFCC';
        
        document.getElementById('tr'+id).style.cursor='pointer';
        
        document.getElementById('divName').innerHTML = document.getElementById('divName'+id).innerHTML;
        document.getElementById('divOffense').innerHTML = document.getElementById('divOffense'+id).innerHTML;
        document.getElementById('divLegendPreview').style.display='none';
        document.getElementById('divOffenderPreview').style.display='block'
}
        
    }
            
function ToggleRowDisplay(id, rowindex)
{
 //   document.getElementById("divmapframe").style.display="none";
    //id = '0' + id
    id = id.replace('emp', '')
    elrowid = 'trsub'+id
    if (document.getElementById(elrowid)!=null) {
    if (document.getElementById(elrowid).style.display!='block')
        {
           //document.getElementById("div"+rowid).innerHTML=document.getElementById("spanWaitSmall").innerHTML;
           document.getElementById(elrowid).style.display='block';
           document.getElementById("img"+id).setAttribute("src","images/minus.gif");
            document.getElementById("imgpic"+id).src = "";
            //s = 'getOffenderImage.aspx?keycode=' + id;
            s = '/docs/jims/offenders/' + id + '.jpg';
            //s = 'http://ims.jocogov.org/docs/jims/offenders/' + id + '.jpg';
            document.getElementById("imgpic"+id).src = s;
            if (rowindex>0) {
                document.getElementById("divResults").scrollTop = 15+(rowindex*20);
                //document.getElementById("divResults").scrollIntoView(true);
            }
           }
    else
        {
           document.getElementById(elrowid).style.display='none';
           document.getElementById("img"+id).setAttribute("src","images/plus.gif");
           document.getElementById("divResults").scrollTop = 0;
        }

            //document.getElementById('trsub'+id).onmouseout=function() {document.getElementById('tr'+id).style.backgroundColor=originalcolor;}
            //document.getElementById('trsub'+id).style.display='block';
    
    }
}
            	
function showWaitBig(display) {
    if (display=="") {
        display = "block";
    }
    
    var winW = 0, winH = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        winW = window.innerWidth;
        winH = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
    winW = document.documentElement.clientWidth;
    winH = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
    winW = document.body.clientWidth;
    winH = document.body.clientHeight;
    }
    document.getElementById("spanWaitBig").style.left = (winW/2) - 135;
    document.getElementById("spanWaitBig").style.top = (winH/2) - 35;
    document.getElementById("spanWaitBig").style.display = display;
}

function showPropinfo(apid) {
    document.getElementById("iframePropinfo").src = "http://ims.jocogov.org/aims2/identifypropfeature.asp?fld=apid&id="+apid+"&src=aims2&scr=elv";
    document.getElementById("divPropinfoframe").style.top = window.event.clientY
    document.getElementById("divPropinfoframe").style.left = window.event.clientX - parseFloat(document.getElementById("divPropinfoframe").style.width)
    document.getElementById("divPropinfoframe").style.display = "block"
}

    function changeDateFrom(days) {
//                var d = new Date(document.getElementById('ddlMaxDate').options[document.getElementById('ddlMaxDate').selectedIndex].value);
//                d = d - (86400000*days);
//                var minDate = new Date(d);
//                
//                var mm = "0" + (minDate.getMonth()+1);
//                    mm = mm.substring(mm.length-2, mm.length);
//                var dd = "0" + minDate.getDate();
//                    dd = dd.substring(dd.length-2, dd.length);
//                minDate = mm + "/" + dd + "/" + minDate.getUTCFullYear();
//                
//                for (var i=0; i < document.getElementById('ddlMinDate').length; i++) {
//                if (document.getElementById('ddlMinDate')[i].value == minDate) {
//                document.getElementById('ddlMinDate')[i].selected = true;
//                }
//                }
               var months = new Array(13);
               months[0]  = "Jan";
               months[1]  = "Feb";
               months[2]  = "March";
               months[3]  = "April";
               months[4]  = "May";
               months[5]  = "June";
               months[6]  = "July";
               months[7]  = "Aug";
               months[8]  = "Sept";
               months[9]  = "Oct";
               months[10] = "Nov";
               months[11] = "Dec";

                var d = new Date(document.getElementById('tbmaxDate').value);
                d = d - (86400000*days);
                var minDate = new Date(d);

                minDate = months[minDate.getMonth()]+" "+minDate.getDate()+", "+minDate.getFullYear()
                document.getElementById("tbminDate").value = minDate;
              
        }		

    function formatDate(inDate) {
               var months = new Array(13);
               months[0]  = "Jan";
               months[1]  = "Feb";
               months[2]  = "March";
               months[3]  = "April";
               months[4]  = "May";
               months[5]  = "June";
               months[6]  = "July";
               months[7]  = "Aug";
               months[8]  = "Sept";
               months[9]  = "Oct";
               months[10] = "Nov";
               months[11] = "Dec";

               var d = new Date(inDate);

               //formattedDate = new Date(months[d.getMonth()]+" "+d.getDate()+", "+d.getFullYear())
               formattedDate = months[d.getMonth()]+" "+d.getDate()+", "+d.getFullYear()
                
               return formattedDate;
        }		
	

function xb_get_element(thing)
{
  if (typeof(thing) == 'undefined' || !thing)
  {
    return null;
  }
  else if (typeof(thing.tagName) == 'undefined' || !thing.tagName)
  {
    if (document.all)
      el = document.getElementById(thing) ? document.getElementById(thing) : document.all[thing];
    else
      el = document.getElementById(thing);

    if (el)
      return el;
    else
      return null;
  }
  else if (thing.tagName)
  {
    return thing;
  }
  else
  {
    return null;
  }
}

/**
Checks if an element has a class
@param  el              element to check. Can be the id or the actual element
@param  searched_class  class to checked

@return boolean
**/
function has_class(el, searched_class)
{//alert('has');
  if (typeof(searched_class) == 'undefined' || !searched_class)
    return false;

  // check valid parameter
 el = xb_get_element(el);

  if (!el)
    return false;

  var class_array = el.className.split(' ');

  for(var i in class_array)
  {
    if (class_array[i] == searched_class)
      return true;
  }
  return false;
}

/**
Adds a class to an element
@param  el            element whose class to add. Can be the id or the actual element
@param  add_class     class to be added

@return boolean
**/
function add_class(el, added_class)
{added_class = 'hover';
  if (typeof(added_class) == 'undefined')
    return false;

  // check valid parameter
  el = xb_get_element(el);

  // if element doesn't exist, or class already there, or no class to add
  if (!el || has_class(el, added_class))
      return false;

  el.className = el.className + ' ' + added_class;

  return true;
}

/**
Removes a class from an element
@param  el            element whose class to remove. Can be the id or the actual element
@param  remove_class  class to be removed

@return boolean
**/
function remove_class(el, removed_class)
{
  if (typeof(removed_class) == 'undefined')
    return false;

  // check valid parameter
  el = xb_get_element(el);

  // if element doesn't exist, or class not there, or no class to remove
  if (!el)
    return false;

  var class_array = el.className.split(' ');
  var class_changed = false;

  for (var i in class_array)
  {
    if (class_array[i] == removed_class)
    {
      // delete removed_class
      class_array.splice(i, 1);
      class_changed = true;
    }
  }

  if (class_changed)
    el.className = class_array.join(' ');

  return class_changed;
}

/**
Changes class of element
@param  el            element whose class to toggle. Can be the id or the actual element
@param  add_class     class to be added
@param  remove_class  clas to be removed

@return boolean
**/
function toggle_class(el, added_class, removed_class)
{
  // check if adding
  add = false;
  if (typeof(added_class) != 'undefined' && added_class)
    add = true;

  // check if removing
  remove = false;
  if (typeof(removed_class) != 'undefined' && removed_class)
    remove = true;

  // if not adding or removing return
  if (!add && !remove )
    return false;

  el = xb_get_element(el);

  // if element doesn't exist
  if (!el)
    return false;

  var class_array = el.className.split(' ');
  var class_changed = false;

  for (var i in class_array)
  {
    if (remove && class_array[i] == removed_class)
    {
      // delete removed_class
      class_array.splice(i, 1);
      class_changed = (true || class_changed);
    }

    if (add && class_array[i] == added_class)
      add = (false || class_changed);
  }

  if (add)
  {
    class_array[class_array.length] = added_class;
    class_changed = (true || class_changed);
  }

  if (class_changed)
    el.className = class_array.join(' ');

  return class_changed;
}

function hilite_row(e,el,turn_on,property_id,property_type)
{el.style.border='1px solid #00FF99'
if(typeof(e)!='undefined')doNothing(e);
var el=xb_get_element(el);
    if(!el)return;
    if(!has_class(el,'last'))
    {   next_id=parseInt(el.id)+1+'row';
    var next_el=xb_get_element(next_id);
        if(!next_el)return;}if(turn_on)
        {add_class(el,'on');
            if(has_class(el,'last'))add_class(el,'bottom');
            if(typeof(next_el)!='undefined')add_class(next_el,'top');
            if(typeof(T_MAP)!='undefined'&& !T_MAP.call_from_map&&typeof(property_id)!='undefined'&&typeof(property_type)!='undefined')
                {
                T_MAP.highlightInteraction('page',property_id,'mouseover',property_type);
                }
        }
            else
            {
            remove_class(el,'on');if(has_class(el,'last'))remove_class(el,'bottom');
            if(typeof(next_el)!='undefined')remove_class(next_el,'top');
            if(typeof(T_MAP)!='undefined'&& !T_MAP.call_from_map&&typeof(property_id)!='undefined'&&typeof(property_type)!='undefined')
    {T_MAP.highlightInteraction('page',property_id,'mouseout',property_type);}
   }
}
    ;

function addInfo(text) {
    infotext = counter + ": ";
    infotext += text;
    infotext += "<br />";
    counter++;
    document.getElementById("divResults").innerHTML += infotext;
//alert(infotext)
}

       //hide these fields
       var excludeFields = ["OBJECTID", "SHAPE", "SHAPE.area", "SHAPE.len", "length", "display", 
                            "symbol", "Main_poly", "AIMSAdd", "AIMSCity", "AIMSState", "AIMSZip"];  //new Array();

       //alias these fields
       var aliasFields = new Array();  
       //["AreaCSqFt": ["Sqft"]];  //new Array();
       aliasFields[0] = new Array ("AreaCSqFt", "Area (ft)");
       aliasFields[1] = new Array ("PerimFt", "Perimeter (ft)");
       aliasFields[2] = new Array ("SbdvName", "Name");

//check for value in fields array
function oc(a) {
    var o = {};
    for (var i = 0; i < a.length; i++) {
        b = a[i].toString().toLowerCase();
        //b.toLowerCase();
        o[b] = "";
    }
    return o;
}
//check for alias name in fields array
var aliasname = "";
function oc2(a, fld) {
    for (var i = 0; i < a.length; i++) {
        if (fld == [a[i][0].toLowerCase()])
            return a[i][1];
    }
    return false;
}


//***************  All esri identify scripts  ***************************
function identify(overlay, latLng) {
content = "";
    if (overlay) return;
        clearResults();
        //addInfo("click - " + latLng);

        // set the identify parameters
        var identifyParameters = new esri.arcgis.gmaps.IdentifyParameters();
        identifyParameters.geometry = latLng; // location where the user clicked on the map
        identifyParameters.tolerance = 3;
        //identifyParameters.layerIds = [1, 5, 10];
        
        identifyParameters.layerOption = "all";  //"all";
        identifyParameters.bounds = map.getBounds();
        var mapSize = map.getSize();
        identifyParameters.width = mapSize.width;
        identifyParameters.height = mapSize.height;

        // execute the identify operation
        //layersToID = livestockMap.getVisibleLayers();
        layersToID = dynamicMap.getVisibleLayers();
        layersToID.splice(0,1); //remove -1
        //set livestock layer
        // if (("0" in oc(layersToID)))  layersToID.push("1");
        
//        if (layersToID.length!=0) {
//            identifyParameters.layerIds = layersToID
//            identifyTask2.execute(identifyParameters, function(response, error) {
//            if (hasErrorOccurred(error)) return;
//            addResultToMap(response, latLng);
//            });
//        }

        //remove county boundary
        layersToID = dynamicMap.getVisibleLayers();
        layersToID.splice(0,1);
        
        //set livestock layer
        if (("0" in oc(layersToID)))  layersToID.push("1");

        //set subdivision layer
        if (("8" in oc(layersToID)))  layersToID.push("9");

        //exit if no layer in id list
        if (layersToID.length!=0) {//{return false};

            identifyParameters.layerIds = layersToID

            // execute the identify operation
            identifyTask.execute(identifyParameters, function(response, error) {
            // function to be called when the result is available
            // display error message (if any) and return
            if (hasErrorOccurred(error)) return;
            // note that the location where the user clicked on the map (latLng) is visible in this function through closure
            addResultToMap(response, latLng);
        });
}
}

function addResultToMap(response, point) {
    // aggregate the result per map service layer
    var idResults = response.identifyResults;
    layers = { "0": [], "1": [], "2": [], "3": [], "4": [], "5": [], "6": [], "7": [], "8": [], "9": [], "10": [] };
    for (var i = 0; i < idResults.length; i++) {
        var result = idResults[i];
        layers[result.layerId].push(result);
    }

    for (var layerId in layers) {
        var results = layers[layerId];
            var count = results.length;
            var label = ""//, //content = "";

            if (count == 0) {};
                for (var j = 0; j < count; j++) {
                    content += "<table cellspacing=0 cellpadding=0  class='identifyfeature' style=''>"
                    content += "<th colspan=2 align=left>"
                    content += "<a href='#' onclick='showFeature(" + results[j].layerId + "," + j + ")'>"
                    content += results[j].layerName;
                    content += "</a>";
                    content += "</th>";
                    var attributes = results[j].feature.attributes;
                    for (var fld in attributes) {
                        if (!(fld.toLowerCase() in oc(excludeFields)))  
                        {
                            f = oc2(aliasFields, fld.toLowerCase());
                            if (!(f)) {
                                f = fld 
                            }
                            content += "<tr>";
                            content += "<td style=vertical-align:top;padding-left:5px;>" + f + "</td>";
                            if (fld.toLowerCase() == "url") {
                                content += "<td style=vertical-align:top;padding-left:5px;><a href=" + attributes[fld] + " target=_new>Link</a></td>";
                            } else {
                                content += "<td style=vertical-align:top;padding-left:5px;>" + attributes[fld] + "</td>";
                            }
                            content += "</tr>";
                        }
                    }
                    content += "</table>";
                content += "<br />";
            }
    if (content!="") { 
        map.openInfoWindowHtml(point, content, {maxWidth:200,maxHeight:200,autoScroll:true});
        }

    }
}

function showFeature(layerId, index) {
    mapExtension.removeFromMap(overlays);
    var idResult = layers[layerId][index];
    overlays = mapExtension.addToMap(idResult, { polygonOptions: { clickable: false} });
}

function addMapServiceLayer(layer, error) {
    // display error message (if any) and return
    if (hasErrorOccurred(error)) return;
    // add layer to the map
    mapExtension.addToMap(layer);
}

function clearResults() {
//    document.getElementById("tbtesting").innerHTML = "";
    counter = 0;
    mapExtension.removeFromMap(overlays);
    map.closeInfoWindow();
}

function hasErrorOccurred(error) {
    if (error) {
        alert("Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error"));
        return true;
    }
    return false;
}
//**********************************************************************


////***************  All esri identify scripts  ***************************
//      function identify(overlay, latLng) {return false;
//        if (overlay) return;
//        clearResults();

//        // set the identify parameters
//        var identifyParameters = new esri.arcgis.gmaps.IdentifyParameters();
//        identifyParameters.geometry = latLng; // location where the user clicked on the map
//        identifyParameters.tolerance = 3;
//        identifyParameters.layerIds = [ 0, 25, 26, 27 ];
//        identifyParameters.layerIds = [0,1,2,3];
//        identifyParameters.layerOption = "all";
//        identifyParameters.bounds = map.getBounds();
//        var mapSize = map.getSize();
//        identifyParameters.width = mapSize.width;
//        identifyParameters.height = mapSize.height;

//        // execute the identify operation
//        identifyTask.execute(identifyParameters, function(response, error) { // function to be called when the result is available
//          // display error message (if any) and return
//          if (hasErrorOccurred(error)) return;

//          // note that the location where the user clicked on the map (latLng) is visible in this function through closure
//          addResultToMap(response, latLng);
//        });
//      }

//      function addResultToMap(response, point) {
//          // aggregate the result per map service layer
//          var idResults = response.identifyResults;
//          
//            var content = "";
//            for (var x = 0; x < idResults.length; x++)
//            {
//                content = content + idResults[x].layerName + "<br />";
//                //alert( idResults[x].feature.attributes["Name"])
//            }
//            content = ""
//        
//        for (var x = 0; x < idResults.length; x++)
//        {
//            var attributes = idResults[x].feature.attributes;
//            //alert(attributes.length);
//            //content += "<td><a href='#' onclick='showFeature(" + layerId + "," + j + ")'>" + attributes["TLID"]  + "</a></td>";
//            for (var k = 0; k < attributes.length; k++) {
//                content += " - " + k + " - " + attributes[k] + "";
//                }
////            content = content + idResults[x].layerName + "<br />";
//        }
//  //      alert(content + "")

//        //map.infoWindow.setContent(content);
//        //map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));

////          alert(idResults[0].feature.attributes["Name"]);
//          
////          for (var j = 0; j < idResults.length; j++) {
////                    var attributes = results[j].feature.attributes;
////                    //alert(attributes);
////                    }
////return false;

//          layers = { "0": [], "1": [], "2": [], "3": [] };
//          for (var i = 0; i < idResults.length; i++) {
//            var result = idResults[i];
//            layers[result.layerId].push(result);
//          }

//          // create and show the info-window with tabs, one for each map service layer
//          var tabs = [];
//          for (var layerId in layers) {
//            var results = layers[layerId];
//            var count = results.length;
//            var label = "", content = "";

//                label = "";
//                for (var j = 0; j < count; j++) {
//                    var attributes = results[j].feature.attributes;
//                    //content += "<td><a href='#' onclick='showFeature(" + layerId + "," + j + ")'>" + attributes["TLID"]  + "</a></td>";
//                    for (var k = 0; k < attributes.length; k++) {
//                        content += layerId + " - " + j + " - " + attributes[k] + "";
//                        }

//                }

////alert(content);

////return false;
//            
//            switch(layerId) {
//              case "0":
//                label = "Bus Routes";
//                content = "Total features returned: <b>" + count + "</b>";
//                if (count == 0) break;
//                content += "<table class='identify' border='1'><th>TLID</th><th>Owner</th><th>Value</th>";
//                for (var j = 0; j < count; j++) {
//                  var attributes = results[j].feature.attributes;
//                  content += "<tr>";
//                  content += "<td><a href='#' onclick='showFeature(" + layerId + "," + j + ")'>" + attributes["TLID"]  + "</a></td>";
//                  content += "<td>" + attributes["OWNER1"]  + "</td>";
//                  content += "<td>" + attributes["TOTALVAL"]  + "</td>";
//                  content += "</tr>";
//                }
//                content += "</table>";
//                break;
//              case "25":
//                label = "Schools";
//                content = "Total features returned: <b>" + count + "</b>";
//                if (count == 0) break;
//                content += "<table class='identify'  border='1'><th>Building ID</th><th>Area</th>";
//                for (var j = 0; j < count; j++) {
//                  var attributes = results[j].feature.attributes;
//                  content += "<tr>";
//                  content += "<td><a href='#' onclick='showFeature(" + layerId + "," + j + ")'>" + attributes["OBJECTID_1"]  + "</td>";
//                  content += "<td>" + attributes["Shape_Area"]  + "</td>";
//                  content += "</tr>";
//                }
//                content += "</table>";
//                break;
//              case "27":
//                label = "Zoning";
//                content = "Total features returned: <b>" + count + "</b>";
//                if (count == 0) break;
//                content += "<table class='identify' border='1'><th>ID</th><th>Zone</th><th>Zone Class</th><th>General Class</th>";
//                for (var j = 0; j < count; j++) {
//                  var attributes = results[j].feature.attributes;
//                  content += "<tr>";
//                  content += "<td><a href='#' onclick='showFeature(" + layerId + "," + j + ")'>" + attributes["OBJECTID"]  + "</td>";
//                  content += "<td>" + attributes["ZONE"]  + "</td>";
//                  content += "<td>" + attributes["ZONE_CLASS"]  + "</td>";
//                  content += "<td>" + attributes["ZONEGEN_CL"]  + "</td>";
//                  content += "</tr>";
//                }
//                content += "</table>";
//                break;
//        }
//        tabs.push(new GInfoWindowTab(label, content));
//    }
//          map.openInfoWindowTabsHtml(point, tabs);
//      }

//      function showFeature(layerId, index) {
//        mapExtension.removeFromMap(overlays);
//        var idResult = layers[layerId][index];
//        overlays = mapExtension.addToMap(idResult, {polygonOptions: { clickable: false}});
//      }

//      function addMapServiceLayer(layer, error) {
//        // display error message (if any) and return
//        if (hasErrorOccurred(error)) return;

//        // add layer to the map
//        mapExtension.addToMap(layer);
//      }

//      function clearResults() {
//        mapExtension.removeFromMap(overlays);
//        map.closeInfoWindow();
//      }

//      function hasErrorOccurred(error) {
//        if (error) {
//          alert("Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
//          return true;
//        }
//        return false;
//      }
////**********************************************************************
