﻿var map;
var center;
var zoomlevel;
var path;
var centrelat;
var centrelng;
var caseid;
var pointlat;
var pointlng;
var pointname;
var pointtitle;
var pointtype;
var bback;
var maptype;

window.onload = function() { 
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        restorMap();
        
        GEvent.addListener(map, "moveend", function() {
            center = map.getCenter();
            //alert(center);
        });
        
        GEvent.addListener(map, "zoomend", function() {
            zoomlevel = map.getZoom();
        }); 
        
        GEvent.addListener(map, "maptypechanged", function() {
            maptype = map.getCurrentMapType().getName();
        });
        
        var sInfoPath = path + "studies/info/?"     
        GDownloadUrl(sInfoPath, function(data) {
            var xml = GXml.parse(data);
            var markers = xml.documentElement.getElementsByTagName("marker");

            for (var i = 0; i < markers.length; i++) {
                var xmlEstId = markers[i].getElementsByTagName("estid");
                var xmlEstName = markers[i].getElementsByTagName("name");
                var xmlEstLat = markers[i].getElementsByTagName("lat");
                var xmlEstLon = markers[i].getElementsByTagName("lon");
                var xmlCaseTitle = markers[i].getElementsByTagName("casetitle");
                var xmlCaseId = markers[i].getElementsByTagName("caseid");
                var xmlCaseType = markers[i].getElementsByTagName("type");
                
                var iEstId = GXml.value(xmlEstId[0]);
                var sEstName = GXml.value(xmlEstName[0]);
                var dEstLat = GXml.value(xmlEstLat[0]);
                var dEstLon = GXml.value(xmlEstLon[0]);
                var sCaseTitle = GXml.value(xmlCaseTitle[0]);
                var iCaseId = GXml.value(xmlCaseId[0]);
                var iCaseType = GXml.value(xmlCaseType[0]);

                if (iCaseId != caseid && iCaseId != 0) {
                    var point = new GLatLng(parseFloat(dEstLat), parseFloat(dEstLon));
                    var aMarker = new createMarker(point, sEstName, sCaseTitle, iCaseId, iCaseType);
                    map.addOverlay(aMarker);
                }
            }
        });
    }
}

function createMarker(pPoint, sName, sTitle, iId, iType) {
    var marker = new GMarker(pPoint);  
    GEvent.addListener(marker, 'click', function() {
        var strB = escape(path + "studies/?zm=" + zoomlevel + "&lat=" + center.lat() + "&lon=" + center.lng() + "&type=" + maptype + "&cid=" + iId + "&plat=" + pPoint.lat() + "&plon=" + pPoint.lng() + "&pname=" + sName + "&ptitle=" + sTitle + "&t=" + iType);
        var html = "<p><b>" + sName + "</b></p><p><a href=\"view/?c=" + iId + "&t=" + iType + "&b=" + strB + "\">" + sTitle + "</a></p>"; 
        marker.openInfoWindowHtml(html);
    });
    return marker;
}

function restorMap() {
    if (centrelat == 0) {
        centrelat = 54.29088164657006;
    }
    if (centrelng == 0) {
        centrelng = -3.8232421875;
    }
    if (zoomlevel == 0) {
        zoomlevel = 6;
    }
       
    center = new GLatLng(centrelat, centrelng);
    map.addControl(new GLargeMapControl());
    map.addControl(new GScaleControl()); 
    map.addControl(new GMapTypeControl());
    
    if (maptype == "Hybird") {  
        map.setMapType(G_HYBIRD_MAP);
    } else if(maptype == "Satellite"){
        map.setMapType(G_SATELLITE_MAP);
    } else {
        maptype = "normal";
        map.setMapType(G_NORMAL_MAP);
    }
    map.setCenter(center, zoomlevel);
    map.enableScrollWheelZoom();
    
    if (pointlat != 0 && pointlng != 0 && caseid != 0) {
        var point = new GLatLng(pointlat, pointlng);
        var aMarker = new initMarker(point, pointname, pointtitle, caseid, pointtype);
        map.addOverlay(aMarker);
    }
}

function initMarker(point, pointname, pointtitle, caseid, pointtype) {
    var marker = new GMarker(point);
    var sInitB = escape(path + "studies/?zm=" + zoomlevel + "&lat=" + center.lat() + "&lon=" + center.lng() + "&type=" + maptype + "&cid=" + caseid + "&plat=" + point.lat() + "&plon=" + point.lng() + "&pname=" + pointname + "&ptitle=" + pointtitle + "&t=" + pointtype);
    var sInitHtml = "<p><b>" + pointname + "</b></p><p><a href=\"view/?c=" + caseid + "&t=" + pointtype + "&b=" + sInitB + "\">" + pointtitle + "</a></p>";
    map.openInfoWindowHtml(point, sInitHtml);
    
    GEvent.addListener(marker, 'click', function() {
        var strB = escape(path + "studies/?zm=" + zoomlevel + "&lat=" + center.lat() + "&lon=" + center.lng() + "&type=" + maptype + "&cid=" + caseid + "&plat=" + point.lat() + "&plon=" + point.lng() + "&pname=" + pointname + "&ptitle=" + pointtitle + "&t=" + pointtype);
        var html = "<p><b>" + pointname + "</b></p><p><a href=\"view/?c=" + caseid + "&t=" + pointtype + "&b=" + strB + "\">" + pointtitle + "</a></p>";   
        marker.openInfoWindowHtml(html);
    });
    return marker;
}
