var myMarker;
var myMarker2;
var map;
var point;

function ouch(message){
alert(message);
}

function panTo(lat,lng,zoom){
window.setTimeout(function() {
  map.panTo(new GLatLng(lat, lng));
}, 1000);
window.setTimeout(function(){map.setZoom(zoom);},1500);
}

function setZoomLevel(zoom){
window.setTimeout(function() {
  map.setZoom(zoom);
}, 500);
}

function loadMap(lat,lng,zoom) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());

	map.setCenter(new GLatLng(lat, lng), zoom);
	//GetMessageFromServer();   
	                         }

    GEvent.addListener(map, "dragend", function() {
      var center = map.getCenter();
      document.getElementById(get_txtMapLongitude_id()).value = '' + center.x;
      document.getElementById(get_txtMapLatitude_id()).value = '' + center.y;
    });
    
    GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {
      var center = map.getCenter();
      document.getElementById(get_txtMapZoom_id()).value = '' + newLevel;
    });
    
    GEvent.addListener(map, "click", function(overlay, point) {

      document.getElementById(get_txtLongitude_id()).value = '' + point.x;
      document.getElementById(get_txtLatitude_id()).value = '' + point.y;
		  
        if ( myMarker != null ){
            map.removeOverlay(myMarker);
        }

        myMarker = new GMarker(point);
        map.addOverlay(myMarker);
        
        document.getElementById(get_txtMapSelected_id()).value = '.';
        
});
}

function showmarker(lat,lng){
window.setTimeout(function() {
  if ( myMarker != null )
    map.removeOverlay(myMarker);
  myMarker = new GMarker(new GLatLng(lat, lng));
  map.addOverlay(myMarker);
}, 1000);
}

function loadMapShow(lat,lng,zoom) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
//    var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };
//    var mgr = new MarkerManager(map, mgrOptions);
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    
	map.setCenter(new GLatLng(lat, lng), zoom);
	GetMessageFromServer();    }
}

function loadMapUpdateLocation(lat,lng,zoom) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GMapTypeControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GSmallZoomControl());
    map.disableDragging();

	map.setCenter(new GLatLng(lat, lng), zoom);
	showmarker(lat, lng);}
}

function loadMapAdminUpdate(lat,lng,zoom) {
  if (GBrowserIsCompatible()) {
    var newMarker;
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    map.addControl(new GLargeMapControl());
    //map.disableDragging();

	map.setCenter(new GLatLng(lat, lng), zoom);
	showmarker(lat, lng);
	
    GEvent.addListener(map, "click", function(overlay, point) {

      document.getElementById("txtNewLatitude").value = '' + point.y;
      document.getElementById("txtNewLongitude").value = '' + point.x;
      document.getElementById("hidNewLatitude").value = '' + point.y;
      document.getElementById("hidNewLongitude").value = '' + point.x;

        if ( newMarker != null ){
            map.removeOverlay(newMarker);
        }

        newMarker = new GMarker(point);
        map.addOverlay(newMarker);
        
    });	
	}
}

function loadMapGPSCopy(lat,lng,zoom) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());

	map.setCenter(new GLatLng(lat, lng), zoom);
	showmarker(lat, lng);
	GetMessageFromServer();
	
    GEvent.addListener(map, "click", function(overlay, point) {

      document.getElementById("txtNewLatitude").value = '' + point.y;
      document.getElementById("txtNewLongitude").value = '' + point.x;
      document.getElementById("hidNewLatitude").value = '' + point.y;
      document.getElementById("hidNewLongitude").value = '' + point.x;

        if ( myMarker != null ){
            map.removeOverlay(myMarker);
        }

        myMarker = new GMarker(point);
        map.addOverlay(myMarker);
        
    });	
	}
}

function showSpeedMarker(lat,lng){
window.setTimeout(function() {
  myMarker = new GMarker(new GLatLng(lat, lng));
  map.addOverlay(myMarker);
}, 100);
}

function getIcon(type)
{
	var icon = new GIcon();
	if ( type.substr(0,1) == 'F' )
    	icon.image = "images/red.png";
	else
	    icon.image = "images/yellow.png";
	icon.shadow = "images/shadow.png";
	icon.iconSize = new GSize(12,20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GLatLng(20,6);
	icon.infoWindowAnchor = new GLatLng(1, 5);
	return icon;
}

function getGPSIcon(colour)
{
	var icon = new GIcon();
	icon.image = "../images/" + colour + ".png";
	icon.shadow = "../images/shadow.png";
	icon.iconSize = new GSize(12,20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GLatLng(20,6);
	icon.infoWindowAnchor = new GLatLng(1, 5);
	return icon;
}

function readXML(mapFile)
{
    //alert(mapFile);
    GDownloadUrl(mapFile , function(data, responseCode) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName("marker");
    //alert(markers.length);
    for (var i = 0; i < markers.length; i++) {
    createMarker(parseFloat(markers[i].getAttribute("id")),
    parseFloat(markers[i].getAttribute("lat")), 
    parseFloat(markers[i].getAttribute("lng")), 
    markers[i].getAttribute("type"), 
    markers[i].getAttribute("county"), 
    markers[i].getAttribute("roadNumber"), 
    markers[i].getAttribute("roadName"),
    markers[i].getAttribute("limit"), 
    markers[i].getAttribute("direction"), 
    markers[i].getAttribute("details"), 
    markers[i].getAttribute("date"), 
    markers[i].getAttribute("time") 
    );
    } });
}

function readXMLforGPS(mapFile)
{
    GDownloadUrl(mapFile , function(data, responseCode) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
    createGPSAddMarker(parseFloat(markers[i].getAttribute("id")),
    parseFloat(markers[i].getAttribute("lat")), 
    parseFloat(markers[i].getAttribute("lng")),
    parseFloat(markers[i].getAttribute("speed")) 
    );
    } });
}

function clearAllMarkers()
{
    map.clearOverlays();
}

function createGPSAddMarker(id, lat, lng, speed) {
  var aMarker = new GMarker(new GLatLng(lat, lng),getGPSIcon("yellow"));
  GEvent.addListener(aMarker, "click", function() {
    var htmlContent;
    htmlContent = "<table width='300'><tr>"
    htmlContent += "<td width=70>"
    htmlContent += "<img src='images/camicon.gif'>"
    htmlContent += "</td>";
    htmlContent += "<td align='left'>";
    htmlContent += "<center><b><u><font size='2'>Id: " + id + "</font></u></b></center><br>";
    htmlContent += "<left>";
    htmlContent += "<b>Latitude: </b>" + lat + "<br>";
    htmlContent += "<b>Longitude: </b>" + lng + "<br>";
    htmlContent += "<b>Speed Limit: </b>" + speed + "<br>";
    htmlContent += "</left>";
    htmlContent += "</td></tr></table>";
    htmlContent += "<br>";
    aMarker.openInfoWindowHtml(htmlContent);
  });
  window.setTimeout(function() {
  map.addOverlay(aMarker);
  }, 1);
}

function createMarker(id, lat, lng, type, county, roadNumber, roadName, speedLimit, direction, details, date, time) {
  var marker = new GMarker(new GLatLng(lat, lng),getIcon(type));
  GEvent.addListener(marker, "click", function() {
    var htmlContent;
    htmlContent = "<table width='300'><tr>"
    htmlContent += "<td width=70>"
    htmlContent += "<img src='images/camicon.gif'>"
    htmlContent += "</td>";
    htmlContent += "<td align='left'>";
    htmlContent += "<center><b><u><font size='2'>" + type + "</font></u></b></center><br>";
    htmlContent += "<left>";
    htmlContent += "<b>County: </b>" + county + "<br>";
    htmlContent += "<b>Road Number: </b>" + roadNumber + "<br>";
    htmlContent += "<b>Road Name: </b>" + roadName + "<br>";
    htmlContent += "<b>Speed Limit: </b>" + speedLimit + "<br>";
    htmlContent += "<b>Direction: </b>" + direction + "<br>";
    htmlContent += "<b>Details: </b>" + details + "<br>";
    //htmlContent += "<b>Last Spotted: </b>" + date;
    //if ( time )
    //    htmlContent += " @ " + time;
    htmlContent += "<br>";
    htmlContent += "</left>";
    htmlContent += "</td></tr></table>";
    htmlContent += "<table><tr><td valign=\"top\" width=\"100\">";
    htmlContent += "<a href=\"locationUpdate.aspx?Id=" + id + "\">Report Sighting</a>";
    htmlContent += "</td>";
    htmlContent += "<td valign=\"top\" width=\"100\">";
    htmlContent += "<a href=\"mapShowLocation.aspx?Id=" + id + "\">Sighting History</a>";
    htmlContent += "</td></tr></table>";
    htmlContent += "<br>";
    marker.openInfoWindowHtml(htmlContent);
  });

  window.setTimeout(function() {
  map.addOverlay(marker);
  }, 10);
}
