fixed_marker_manager = null;
organization_marker_manager = null;
search_marker_manager = null;
request_from_multiple = null;
previous_marker_text = null;
request_queue = null;
previous_click = null;
intersection_marker_manager = null;
HANDLER_PATH = "/trra_resources"

function UpdateSearchText(numResults) {

    jQuery('#search_text').html('<b>Found ' + numResults + ' result(s) for:</b> ' + jQuery('#tb').val());
    jQuery('#search_text').show();
    jQuery('#tb').value = "Keyword";

}

function handleRequestQueue() {

    if (request_queue && request_queue.length > 0) {
        if (request_queue.length == 1) {
            handleRequest(request_queue[request_queue.length-1]);
            request_queue = null;
        }
        else {            
            handleRequest(request_queue[request_queue.length-1]);
            request_queue.pop();
        }
    }
}

function handleRequest(options) {
    var url;
    switch (options.marker_type) {    
        case "FIXED" :   
            switch (options.request_type) {            
                case "LOAD_MARKERS": url = HANDLER_PATH + "/MapHandler.ashx?type=fixedmarkers&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&callback=handleResponse"; break;
                case "LOAD_DETAILS_SINGLE": 
                    if (options.param_2)
                        url = HANDLER_PATH + "/MapHandler.ashx?type=individualfixedmarkerbyname&class="+options.param_1+"&currentsearch="+ options.param_2 +"&zoomlevel="+map.getZoom()+"&callback=handleResponse"; 
                    else {
                        url = HANDLER_PATH + "/MapHandler.ashx?type=fixedmarker&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentFixedType+"&callback=handleResponse"; break;                       
                    }
                    break;
                case "LOAD_DETAILS_MULTIPLE": url = HANDLER_PATH + "/MapHandler.ashx?type=multifixedmarkers&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentFixedType+"&callback=handleResponse"; break;
                default: alert("Invalid request type"); break;            
            }
            break;            
        case "ORGANIZATION": 
			//alert(options.param_1 + " -- " + options.param_2 + " -- " +currentType);
            switch (options.request_type) { 
                case "LOAD_MARKERS": url = HANDLER_PATH + "/MapHandler.ashx?type=marker&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&callback=handleResponse"; break;            
                case "LOAD_DETAILS_SINGLE" :
                    if (options.param_2)
                        url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarkerbyname&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currentsearch="+options.param_2+"&callback=handleResponse";
                    else
                        url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarker&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentType+"&callback=handleResponse"; 
                    break;
                case "LOAD_DETAILS_MULTIPLE" : url = HANDLER_PATH + "/MapHandler.ashx?type=multiplemarkers&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentType+"&callback=handleResponse"; break
                default: alert("Invalid request type"); break;           
            }            
            break;
        case "SEARCH":
            switch(options.request_type) {
                case "LOAD_MARKERS": url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarkerlocation&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&callback=handleResponse"; break;          		 
				case "LOAD_MARKERS_BY_ID": url = HANDLER_PATH + "/MapHandler.ashx?type=searchurlmarkerlocation&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&callback=handleResponse";break;
                case "LOAD_DETAILS_SINGLE": 
                    if (options.param_2)
                        url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarkerfromsearch&class="+options.param_2+"&zoomlevel="+map.getZoom()+"&currenttype="+currentType+"&currentsearch="+options.param_1+"&callback=handleResponse";
                    else
                        url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarkerfromsearch&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentType+"&currentsearch="+currentSearch+"&callback=handleResponse";
                    break;   
                case "LOAD_DETAILS_MULTIPLE": url = HANDLER_PATH + "/MapHandler.ashx?type=multiplemarkersfromsearch&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&currenttype="+currentType+"&currentsearch="+currentSearch+"&callback=handleResponse"; break;
                case "LOAD_DETAILS_MULTIPLE_TRRAID": url = HANDLER_PATH + "/MapHandler.ashx?type=multiplemarkersfromsearchwithtrraid&class="+options.param_1+"&callback=handleResponse"; break;
                case "LOAD_DETAILS_SINGLE_TRRAID": url = HANDLER_PATH + "/MapHandler.ashx?type=individualmarkerfromsearchwithtrraid&class="+options.param_1+"&callback=handleResponse"; break;
                default: alert("Invalid request type"); break;
            }
            break;
        case "LABEL":
            switch(options.request_type) {
                case "LOAD_DETAILS": url = HANDLER_PATH + "/MapHandler.ashx?type=labelmarker&class="+options.param_1+"&zoomlevel="+map.getZoom()+"&callback=handleResponse"; break;          
                default: alert("Invalid request type"); break;           
            }
            break;
        case "INTERSECTIONS":
            switch(options.request_type) {
                case "LOAD_MARKERS": url = HANDLER_PATH + "/MapHandler.ashx?type=intersectionpoints&callback=handleResponse"; break;
                case "LOAD_DETAILS": url = HANDLER_PATH + "/MapHandler.ashx?type=intersectionpointdetails&class="+options.param_1+"&callback=handleResponse"; break;
                default: alert("Invalid request type"); break;
            }
            break;
        default: alert("Invalid marker type"); break;
            
    }    

    bObj = new JSONscriptRequest(url); 
    bObj.buildScriptTag();
    bObj.addScriptTag();
}

function handleResponse(response_type, json_data) {
    if (bObj)
    {
        bObj.removeScriptTag(); 
        bObj = null;
        switch(response_type) {
            case "LOAD_MARKERS":
                var fixed_markers = [];
                if (fixed_marker_manager)
                    fixed_marker_manager.clearMarkers();                    
                try
                {       
		            var al = json_data.ResultSet.length;
                    for(var i=0;i<al;i++)
                    {
                        var coordSet = json_data.ResultSet[i].LatLong.split("(")[1].split(")")[0].split(" ");
                        
                        if (parseInt(json_data.ResultSet[i].Count) > 1)
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gClusterIcon);
                            GEvent.addListener(marker, "click", function(latlng) {
                                handleRequest({marker_type:"FIXED", request_type:"LOAD_DETAILS_MULTIPLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            fixed_markers.push(marker);
                            
                        }
                        else
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gSmallIcon);
                            var p1 = json_data.ResultSet[i].LatLong;
                            GEvent.addListener(marker, "click", function(latlng) {                                
                                handleRequest({marker_type:"FIXED", request_type:"LOAD_DETAILS_SINGLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            fixed_markers.push(marker);
                            
                        }                        
                    }
                     fixed_marker_manager = new MarkerManager(map);                     
                     fixed_marker_manager.addMarkers(fixed_markers, MinZoom);                    
                     fixed_marker_manager.refresh();
                }
                catch(e)
                {
                    alert(e.message);
                } 
            break;            
            case "SHOW_INFORMATION":           
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                
                if (request_from_multiple) {
                    request_from_multiple = null;
                    var markerText = "<img id='backImage' src='/images/maptools/back.png' onclick='handleRequest({marker_type:\"FIXED\", request_type:\"LOAD_DETAILS_MULTIPLE\", param_1: \""+json_data.ResultSet[0].LatLong+"\"});'><br/>";                
                }
                else
                    var markerText = "";                    
                    
                markerText += "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>" + json_data.ResultSet[0].Name + "</b></span><br/>";
                
				sAddress = json_data.ResultSet[0].Address.split(",");
				
                if (json_data.ResultSet[0].Website.indexOf("http") > -1)
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                else
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"http://" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                                    
                markerText += "<span id='more_details'  style='float:left;' onclick='getProfile(\""+escape(json_data.ResultSet[0].Name)+"\");'>Organization Profile</span><span id='more_details' style='padding-left:10px' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
				
                map.openInfoWindowHtml(pt,markerText);
            break; 
            case "SHOW_MULTIPLE_INFORMATION":
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
        
                var markerText = "";
                markerText += "<div style='max-height:100px; overflow:auto;margin-right:10px;'>";
                
                for(var i=0;i<json_data.ResultSet.length;i++)
                {
                    if (i == json_data.ResultSet.length-1)
                        markerText += "<div id='multiMarkerContainer' style='border-bottom:1px solid lightgray'>";
                    else
                        markerText += "<div id='multiMarkerContainer'>";
                    markerText += "<span id='multiMarkerName' onclick='request_from_multiple = \""+json_data.ResultSet[i].LatLong+"\"; handleRequest({marker_type:\"FIXED\", request_type:\"LOAD_DETAILS_SINGLE\", param_1: \""+escape(json_data.ResultSet[i].Name)+"\", param_2: \""+json_data.ResultSet[i].LatLong+"\"});'>" + json_data.ResultSet[i].Name + "</span>";
                    markerText += "</div>";
                }                
                markerText+= "</div>";
                markerText += "<span id='markerText'>"+json_data.ResultSet.length+" sites found</span>";
                previous_marker_text = markerText;
                map.openInfoWindowHtml(pt,markerText);
            break;
            case "LOAD_ORGANIZATION_MARKERS":
                var organization_markers = [];
				
                if (organization_marker_manager) {
                    organization_marker_manager.clearMarkers();
				}
                try
                {       
		            var al = json_data.ResultSet.length;
                    for(var i=0;i<al;i++)
                    {
                        var coordSet = json_data.ResultSet[i].LatLong.split("(")[1].split(")")[0].split(" ");
                        
                        if (parseInt(json_data.ResultSet[i].Count) > 1)
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
							if (currentOrganizations[currentOrganizations.length-1] == 31 || currentOrganizations[currentOrganizations.length-1] == 32 || currentOrganizations[currentOrganizations.length-1] == 34 || currentOrganizations[currentOrganizations.length-1] == 35)
								var marker = new GMarker(pt, gClusterIcon);
							else
								var marker = new GMarker(pt, gClusterIconOrganizations);
								
                            GEvent.addListener(marker, "click", function(latlng) {
                                handleRequest({marker_type:"ORGANIZATION", request_type:"LOAD_DETAILS_MULTIPLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            organization_markers.push(marker);
                            
                        }
                        else
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
							if (currentOrganizations[currentOrganizations.length-1] == 31 || currentOrganizations[currentOrganizations.length-1] == 32 || currentOrganizations[currentOrganizations.length-1] == 34 || currentOrganizations[currentOrganizations.length-1] == 35)
								var marker = new GMarker(pt, gSmallIcon);
							else
								var marker = new GMarker(pt, gSmallIconOrganizations);
                            var p1 = json_data.ResultSet[i].LatLong;
                            GEvent.addListener(marker, "click", function(latlng) {                                
                                handleRequest({marker_type:"ORGANIZATION", request_type:"LOAD_DETAILS_SINGLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            organization_markers.push(marker);
                            
                        }                        
                    }
                     organization_marker_manager = new MarkerManager(map);                     
                     organization_marker_manager.addMarkers(organization_markers, MinZoom);                    
                     organization_marker_manager.refresh();
                }
                catch(e)
                {
                    alert(e.message);
                } 
            break;           
            case "SHOW_ORGANIZATION_INFORMATION":           
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                
                if (request_from_multiple) {
                    
                    var markerText = "<img id='backImage' src='/images/maptools/back.png' onclick='handleRequest({marker_type:\"ORGANIZATION\", request_type:\"LOAD_DETAILS_MULTIPLE\", param_1: \""+request_from_multiple+"\"});'><br/>";
                    request_from_multiple = null;
                }
                else
                    var markerText = "";
                    
                markerText += "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>" + json_data.ResultSet[0].Name + "</b></span><br/>";
                
                sAddress = json_data.ResultSet[0].Address.split(",");
				
                if (json_data.ResultSet[0].Website.indexOf("http") > -1)
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                else
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"http://" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                                    
                markerText += "<span id='more_details' style='float:left' onclick='getProfile(\""+escape(json_data.ResultSet[0].Name)+"\");''>Organization Profile</span><span id='more_details' style='padding-left:10px;' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
                map.openInfoWindowHtml(pt,markerText);
            break;      
            case "SHOW_MULTIPLE_ORGANIZATION_INFORMATION":
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
        
                var markerText = "";
                markerText += "<div style='max-height:100px; overflow:auto;margin-right:10px;'>";
                
                for(var i=0;i<json_data.ResultSet.length;i++)
                {
                    if (i == json_data.ResultSet.length-1)
                        markerText += "<div id='multiMarkerContainer' style='border-bottom:1px solid lightgrey'>";
                    else
                        markerText += "<div id='multiMarkerContainer'>";
                    markerText += "<span id='multiMarkerName' onclick='handleRequest({marker_type:\"ORGANIZATION\", request_type:\"LOAD_DETAILS_SINGLE\", param_1: \""+escape(json_data.ResultSet[i].Name)+"\", param_2: \""+json_data.ResultSet[i].LatLong+"\"}); request_from_multiple = \""+json_data.ResultSet[i].LatLong+"\";'>" + json_data.ResultSet[i].Name + "</span>";
                    markerText += "</div>";
                }                
                markerText+= "</div>";
                markerText += "<span id='markerText'>"+json_data.ResultSet.length+" sites found</span>";
                previous_marker_text = markerText;
                map.openInfoWindowHtml(pt,markerText);
            break;
            case "LOAD_SEARCH_MARKERS":
                var search_markers = [];
                if (search_marker_manager)
                    search_marker_manager.clearMarkers();                    
                try
                {       
		            var al = json_data.ResultSet.length;
                    for(var i=0;i<al;i++)
                    {
                        var coordSet = json_data.ResultSet[i].LatLong.split("(")[1].split(")")[0].split(" ");
                        
                        if (parseInt(json_data.ResultSet[i].Count) > 1)
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gClusterIconSearch);
                            GEvent.addListener(marker, "click", function(latlng) {
                                handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_MULTIPLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            search_markers.push(marker);
                            
                        }
                        else
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gSmallIconSearch);
                            var p1 = json_data.ResultSet[i].LatLong;
                            GEvent.addListener(marker, "click", function(latlng) {                                
                                handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                            });
                            search_markers.push(marker);
                            
                        }                        
                     }
					 
                     search_marker_manager = new MarkerManager(map);                     
                     search_marker_manager.addMarkers(search_markers, MinZoom);                    
                     search_marker_manager.refresh();    
					 
                    if (search_markers.length > 0) {
                        //updateCurrentlyViewing("Map Search", "Search Results", {checked: true});
                        UpdateSearchText(search_markers.length); // <jdobson@esolutionsgroup.ca>
                    }
					 
                     if (search_markers.length == 1 && initialSearch) {  
						initialSearch = false;
                        map.setCenter(pt, map.getZoom());
                        if (request_queue != null) {
							request_queue[request_queue.length] = {marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE", param_1: json_data.ResultSet[0].LatLong};   
						} else {
							handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE", param_1: json_data.ResultSet[0].LatLong});   
						}
                     }                      
                }
                catch(e) {
                    alert(e.message);
                } 
            break;           
            case "LOAD_SEARCH_MARKERS_TRRAID":
				var search_markers = [];
                if (search_marker_manager)
                    search_marker_manager.clearMarkers();                    
                try
                {       
		            var al = json_data.ResultSet.length;
                    for(var i=0;i<al;i++)
                    {
                        var coordSet = json_data.ResultSet[i].LatLong.split("(")[1].split(")")[0].split(" ");
						var trraIds = json_data.ResultSet[i].TRRAIds
                        
                        if (parseInt(json_data.ResultSet[i].Count) > 1)
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gClusterIconSearch);
                            GEvent.addListener(marker, "click", function(latlng) {
                                handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_MULTIPLE_TRRAID", param_1: trraIds});
                            });
                            search_markers.push(marker);
                            
                        }
                        else
                        {
                            var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                            var marker = new GMarker(pt, gSmallIconSearch);
                            var p1 = json_data.ResultSet[i].LatLong;
                            GEvent.addListener(marker, "click", function(latlng) {                                
                                handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE_TRRAID", param_1: trraIds});
                            });
                            search_markers.push(marker);
                            
                        }                        
                     }
					 
                     search_marker_manager = new MarkerManager(map);                     
                     search_marker_manager.addMarkers(search_markers, MinZoom);                    
                     search_marker_manager.refresh();    
					 
                    if (search_markers.length > 0) {
                        //updateCurrentlyViewing("Map Search", "Search Results", {checked: true});
                        UpdateSearchText(search_markers.length); // <jdobson@esolutionsgroup.ca>
                    }					 
					 
                     if (search_markers.length == 1 && initialTRRASearch) {  
						initialTRRASearch = false;
                        map.setCenter(pt, map.getZoom());
                        if (request_queue != null) {
							request_queue[request_queue.length] = {marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE_TRRAID", param_1: json_data.ResultSet[0].TRRAIds};   
						} else {
							handleRequest({marker_type:"SEARCH", request_type:"LOAD_DETAILS_SINGLE_TRRAID", param_1: json_data.ResultSet[0].TRRAIds});   						
						}
                     }
                     
                }
                catch(e) {
                    alert(e.message);
                } 
            break;           
            case "SHOW_SEARCH_INFORMATION":           
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                
                if (request_from_multiple) {                    
                    var markerText = "<img id='backImage' src='/images/maptools/back.png' onclick='handleRequest({marker_type:\"SEARCH\", request_type:\"LOAD_DETAILS_MULTIPLE\", param_1: \""+request_from_multiple+"\"});'><br/>";
                    request_from_multiple = null;
                }
                else
                    var markerText = "";
                    
                markerText += "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>" + json_data.ResultSet[0].Name + "</b></span><br/>";
                
                sAddress = json_data.ResultSet[0].Address.split(",");
				
                if (json_data.ResultSet[0].Website.indexOf("http") > -1)
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                else
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"http://" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                                      
                markerText += "<span id='more_details' onclick='getProfile(\""+escape(json_data.ResultSet[0].Name)+"\");''>Organization Profile</span><span id='more_details' style='padding-left:10px' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
                map.openInfoWindowHtml(pt,markerText);
            break;      
            case "SHOW_SEARCH_INFORMATION_TRRAID":           
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                
                if (request_from_multiple) {                    
                    var markerText = "<img id='backImage' src='/images/maptools/back.png' onclick='handleRequest({marker_type:\"SEARCH\", request_type:\"LOAD_DETAILS_MULTIPLE_TRRAID\", param_1: \""+request_from_multiple+"\"});'><br/>";
                    request_from_multiple = null;
                }
                else
                    var markerText = "";
                    
                markerText += "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>" + json_data.ResultSet[0].Name + "</b></span><br/>";
                
                sAddress = json_data.ResultSet[0].Address.split(",");
				
                if (json_data.ResultSet[0].Website.indexOf("http") > -1)
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                else
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"http://" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                                      
                markerText += "<span id='more_details' onclick='getProfile(\""+escape(json_data.ResultSet[0].Name)+"\", \"" + json_data.ResultSet[0].TRRAId + "\");''>Organization Profile</span><span id='more_details' style='padding-left:10px' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
                map.openInfoWindowHtml(pt,markerText);
            break;      
            case "SHOW_MULTIPLE_SEARCH_INFORMATION":
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
        
                var markerText = "";
                markerText += "<div style='max-height:100px; overflow:auto;margin-right:10px;'>";
                
                for(var i=0;i<json_data.ResultSet.length;i++)
                {
                    if (i == json_data.ResultSet.length-1)
                        markerText += "<div id='multiMarkerContainer' style='border-bottom:1px solid lightgrey'>";
                    else
                        markerText += "<div id='multiMarkerContainer'>";
                    markerText += "<span id='multiMarkerName' onclick='handleRequest({marker_type:\"SEARCH\", request_type:\"LOAD_DETAILS_SINGLE\", param_1: \""+escape(json_data.ResultSet[i].Name)+"\", param_2: \""+json_data.ResultSet[i].LatLong+"\"}); request_from_multiple = \""+json_data.ResultSet[i].LatLong+"\";'>" + json_data.ResultSet[i].Name + "</span>";
                    markerText += "</div>";
                }                
                markerText+= "</div>";
                markerText += "<span id='markerText'>"+json_data.ResultSet.length+" sites found</span>";
                previous_marker_text = markerText;
                map.openInfoWindowHtml(pt,markerText);
            break;
            case "SHOW_MULTIPLE_SEARCH_INFORMATION_TRRAID":
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
        
                var markerText = "";
                markerText += "<div style='max-height:100px; overflow:auto;margin-right:10px;'>";
                
                for(var i=0;i<json_data.ResultSet.length;i++)
                {
                    if (i == json_data.ResultSet.length-1)
                        markerText += "<div id='multiMarkerContainer' style='border-bottom:1px solid lightgrey'>";
                    else
                        markerText += "<div id='multiMarkerContainer'>";
                    markerText += "<span id='multiMarkerName' onclick='handleRequest({marker_type:\"SEARCH\", request_type:\"LOAD_DETAILS_SINGLE_TRRAID\", param_1: \""+escape(json_data.ResultSet[i].TRRAId)+"\"}); request_from_multiple = \""+json_data.ResultSet[i].TRRAIds+"\";'>" + json_data.ResultSet[i].Name + "</span>";
                    markerText += "</div>";
                }                
                markerText+= "</div>";
                markerText += "<span id='markerText'>"+json_data.ResultSet.length+" sites found</span>";
                previous_marker_text = markerText;
                map.openInfoWindowHtml(pt,markerText);
            break;
            case "SHOW_LABEL_INFORMATION":
                var pt = previous_click                
                var markerText = "";
                    
                markerText += "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>" + json_data.ResultSet[0].Name + "</b></span><br/>";
                
                sAddress = json_data.ResultSet[0].Address.split(",");
				
                if (json_data.ResultSet[0].Website.indexOf("http") > -1)
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                else
                    markerText += "<span id='markerText'>" + sAddress[0] + "<br/>" + sAddress[1] + ", " + sAddress[2] + ", " + sAddress[4] + "<br/><a href='#' onclick='window.open(\"http://" + json_data.ResultSet[0].Website +"\");' style='text-transform: lowercase;color:blue;'>"+json_data.ResultSet[0].Website+"</a></span><br/><br/>";
                                         
                markerText += "<span id='more_details' onclick='getProfile(\""+escape(json_data.ResultSet[0].Name)+"\");''>Organization Profile</span><span id='more_details' style='padding-left:10px' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
                map.openInfoWindowHtml(pt,markerText);
                break;
            case "LOAD_INTERSECTION_MARKERS":         
                var intersection_markers = [];
                if (intersection_marker_manager)
                    intersection_marker_manager.clearMarkers();                    
                try
                {       
		            var al = json_data.ResultSet.length;
                    for(var i=0;i<al;i++)
                    {
                        var coordSet = json_data.ResultSet[i].LatLong.split("(")[1].split(")")[0].split(" ");
                        var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                        var marker = new GMarker(pt, gSmallIconIntersection);
                        var p1 = json_data.ResultSet[i].LatLong;
                        GEvent.addListener(marker, "click", function(latlng) {                                
                            handleRequest({marker_type:"INTERSECTIONS", request_type:"LOAD_DETAILS", param_1: "POINT("+latlng.lng()+" "+latlng.lat()+")"});
                        });
                        intersection_markers.push(marker);          
                    }
                     intersection_marker_manager = new MarkerManager(map);                     
                     intersection_marker_manager.addMarkers(intersection_markers, MinZoom);                    
                     intersection_marker_manager.refresh();
                }
                catch(e)
                {
                    alert(e.message);
                } 
            break;   
            case "SHOW_INTERSECTION_INFORMATION":           
                var coordSet = json_data.ResultSet[0].LatLong.split("(")[1].split(")")[0].split(" ");
                var pt = new GLatLng(coordSet[1].trim(), coordSet[0].trim());
                
                var markerText = "<div id='markerTextDiv'>";
                markerText += "<span id='markerName'><b>Intersection</b></span><br/>";
                markerText += "<span id='markerText'>" + json_data.ResultSet[0].Name_1 + " & " + json_data.ResultSet[0].Name_2 + "<br/>"+json_data.ResultSet[0].CSD+"</span><br/><br/>";
     
                markerText += "<span id='more_details' onclick='getReports(\""+json_data.ResultSet[0].LatLong+"\");''>Area Reports</span></div>";              
                map.openInfoWindowHtml(pt,markerText);
            break;              
            default: alert("Invalid response type: "+eval(response_type)); break;           
        }
        handleRequestQueue();
    }
}