/*
    MAP CLUSTER FUNCTIONS
    --------------------------------------
    Copyright 2006(c)
    HDProtech
    5959 Corporate Drive, Suite 3015
    Houston, Texas 77036
*/

    var reqData = null;
    var max_lng = 0;
    var min_lng = 0;
    var max_lat = 0;
    var min_lat = 0;

    function loadCameras(){
            try{                
                var url = "SrvCameras";
                if(window.XMLHttpRequest){
                    reqData = new XMLHttpRequest;                    
                } else if (window.ActiveXObject){
                    reqData = new ActiveXObject("Microsoft.XMLHTTP");                    
                }
                reqData.open("GET", url, true);
                reqData.onreadystatechange = LoadClusterData;
                reqData.send(null);	
            } catch(err){
                alert(err);
            }
    }


	function LoadClusterData(){
            try{
            if(reqData.readyState == 4){
                if(reqData.status == 200){
                    //alert(reqData.responseText);               
                    var clusterName = "";
                    var addr = "";
                    var lng = 0.0;
                    var lat = 0.0;
                    var recidx;
                    map.clearOverlays();
                    var cluster = reqData.responseXML.getElementsByTagName("cluster");
                    //alert("Size: " + cluster.length);
                    for(i=0; i < cluster.length; i++){
                        var data = cluster[i];                    
                        addr = data.getElementsByTagName("address")[0].firstChild.nodeValue;
                        lat  = data.getElementsByTagName("lng")[0].firstChild.nodeValue * 1;
                        lng  = data.getElementsByTagName("lat")[0].firstChild.nodeValue * 1;     
                        recidx = data.getElementsByTagName("recidx")[0].firstChild.nodeValue;
                        clusterName = data.getElementsByTagName("name")[0].firstChild.nodeValue;
                        if(i==0){
                            max_lat = lat; min_lat = lat;
                            max_lng = lng; min_lng = lng;
                        }
                        if(max_lat < lat) max_lat = lat; if(lat < min_lat) min_lat = lat;
                        if(max_lng < lng) max_lng = lng; if(lng < min_lng) min_lng = lng;

                        try{
                            var point = new GLatLng(lat, lng);
                            map.addOverlay(createClusterMarker(point, addr, recidx, clusterName));
                        } catch (err) {
                        }
                    }

                    var cLat = min_lat + ((max_lat - min_lat)/2);
                    var cLng = max_lng + ((min_lng - max_lng)/2);
                    centerMap(cLat, cLng);
                    if(getZoomLevel() < 6){
                        setZoomLevel(12);    
                    }
                }
            }	
            } catch(err){
                alert(err);
            }
	}

        function createClusterMarker(point, addr, recidx, name){
            try{
                var marker = new GMarker(point);        
                GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml("<b>" + name + "</b><br><a href='javascript:OpenCameraView(" + recidx + ")'>View Cameras</a>");
                }); 
            } catch (err){
            }
            return marker;
        }

        function OpenCameraView(recidx){            
            document.getElementById("ImgFrame").src = "SrvCamViewer?id=" + recidx;
        }
