//<![CDATA[
var glWiki = new GLayer("org.wikipedia.en");
var glPan = new GLayer("com.panoramio.all");
var map;
var cluster;
var markersArray=[];
var icons=[];
var j = 1;
var gmarkers = [];
var htmls = [];
var htcontrol = null;
var DETECT = navigator.userAgent.toLowerCase();
var ol2;
var markerState;
var documentId = "";

	function querystring(key) 
		{ 
			var value = null; 
			for (var j=0;j<querystring.keys.length;j++) { 
					if (querystring.keys[j]==key) { 
						value = querystring.values[j]; 
						break; 
					} 
			} 
			return value; 
		} 

	querystring.keys = new Array(); 
	querystring.values = new Array(); 

	function querystring_parse() { 
		var query = window.location.search.substring(1); 
		var pairs = query.split("&"); 

		for (var j=0;j<pairs.length;j++) { 
			var pos = pairs[j].indexOf('='); 
			if (pos >= 0) { 
				var argname = pairs[j].substring(0,pos); 
				var value = pairs[j].substring(pos+1); 
				querystring.keys[querystring.keys.length] = argname; 
				querystring.values[querystring.values.length] = value; 
			} 
		} 
	} 
	querystring_parse(); 

documentId = querystring("did");


    function ClearMapAndVars()
    {
        map.clearOverlays();
	    htmls.length = 0;
	    gmarkers.length = 0;
        markersArray=[];
	    cluster.removeMarkers();
	    cluster.refresh(true);
	    j = 1;
	    htcontrol = null;
    }
    
    function ShowScribd(docid, dockey)
    {
//        var scribd_doc = scribd.Document.getDoc(docid, dockey);
//        scribd_doc.addParam("height", 770);
//        scribd_doc.addParam("width", 800);
//        scribd_doc.write("embedded_flash");
    }

    function ShowSingleScribd(docid, dockey)
    {
        var scribd_doc = scribd.Document.getDoc(docid, dockey);
        scribd_doc.addParam("height", 770);
        scribd_doc.addParam("width", 800);
        scribd_doc.write("embedded_flash_single");
    }

    function resultScribdFunction(t){
        lines = t.split("\n");
        for (var i=0; i<lines.length; i++) {
            if (lines[i].length > 1) {
                parts = lines[i].split("|");
                var docid = parts[0];
                var dockey = parts[1];
                //setTimeout("ShowSingleScribd('"+docid+"', '"+dockey+"')",2000);
            }
        }
    }

    function resultFunction(t){
    }

    function processResultText(t)
    {
        showTabRight(1);
    }
    
	function SideClick(i) {
		//gmarkers[i].openInfoWindowHtml(htmls[i]);
		//showDetails(htmls[i]);
	        //document.getElementById("details-close").innerHTML = "<img alt=\"Close details\" onclick=\"closeDetails('"+i+"')\" onmouseout=\"this.style.cursor='default'\" onmouseover=\"this.style.cursor='pointer'\" src=\"/DesktopModules/DocMap/images/cross.gif\" border=\"0\" />";
		//var _point = gmarkers[i].getLatLng();
		//map.panTo(_point);
	}
    
    function processResult(t)
    {
        showTabRight(1);
	    ClearMapAndVars();
        var dom = GXml.parse(t);
        var markers = dom.getElementsByTagName("marker");
        var marker;
     
/*   
// Add 100 markers to the map at random locations
        var bounds = map.getBounds();
        var southWest = bounds.getSouthWest();
        var northEast = bounds.getNorthEast();
        var lngSpan = northEast.lng() - southWest.lng();
        var latSpan = northEast.lat() - southWest.lat();
        for (var i = 0; i < 100; i++) {
          var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
                                  southWest.lng() + lngSpan * Math.random());
          marker = createMarker(point,"",0,i);
          markersArray.push(marker);
        }
*/

        if(markers.length > 0)
        {
            for (var i=0;i<markers.length;i++)
            {
                var oItem = markers[i];
                var lat = parseFloat(oItem.getAttribute("lat"));
                var lng = parseFloat(oItem.getAttribute("lng"));
                var gr = oItem.getAttribute("gr");
                var sl = oItem.getAttribute("sl");
                var doclist = oItem.getAttribute("docids");
                var locationaddress = oItem.getAttribute("ad");
                var counter = oItem.getAttribute("counter");
                var point = new GLatLng(lat,lng);
                var max = '';
                //alert(max);
                var docs = doclist.split("||");
				max = "<div style=\"font-size:11px;\">";
				max += "<strong>Location</strong>: " + sl + "<br>";
				if(gr != "")
				{
    				max += "<strong>NGR</strong>: " + gr + "<br />";
				}
				else
				{
				    max += "<strong>Latitude</strong>: " + lat + "<br />";
				    max += "<strong>Longitude</strong>: " + lng;
				}
   				max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
				max += "<strong>Documents/Reports</strong>:<br />"
   				max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
				for (var z=0; z<docs.length; z++) {
				    if (docs[z].length > 1) 
				    {
				        var doc = docs[z];
				        parts = doc.split("|");
				        var docid = parts[0];
				        var pname = parts[1];
				        var sid = parts[2];
				        var skey = parts[3];
				        var dyear = parts[4];
				        var duser = parts[5];
				        var ddesc = parts[6];
				        max += "<img align=\"absmiddle\" src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/singleicon.png\" border=\"0\">&nbsp;";
				        max += "<b>" + dyear + " - " + pname + "</b><br />";
				        max += duser + "<br /><br />" + ddesc + "<br /><br /><a title=\"Click here to view the "+pname+" document\" href=\"javascript:void(0);\" onclick=\"ShowScribdPanel('"+sid+"','"+skey+"','"+docid+"')\"><img src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/pdf.gif\" border=\"0\"></a>&nbsp;<a title=\"Click here to view the "+pname+" document\" href=\"javascript:void(0);\" onclick=\"ShowScribdPanel('"+sid+"','"+skey+"','"+docid+"')\">View full document</a><br />";
        				max += "<a title=\"Click here to send a friend a link\" href=\"javascript:void(0);\" onclick=\"ShowEmailPanel('"+docid+"')\"><img src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/email_link.gif\" border=\"0\"></a>&nbsp;<a title=\"Click here to send a friend a link\" href=\"javascript:void(0);\" onclick=\"ShowEmailPanel('"+docid+"')\">Send a friend a link</a>";
        				max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
				    }
				}
				max += "</div>";
			    title=sl;
                marker = createMarker(point,counter,title,max,gmarkers.length);
                markersArray.push(marker);
            }
                cluster.addMarkers(markersArray);
                cluster.fitMapToMarkers();
                map.savePosition();
        }
        else
        {
            cluster.removeMarkers();
            cluster.refresh(true);
            map.setCenter(new GLatLng(54.70235509327093, -3.2080078125), 6);
        }
            updateStats();
    }

    function createMarker(point,counter,title,max,index) {
		var baseIcon=new GIcon();
		baseIcon.iconSize=new GSize(25, 28);
		baseIcon.iconAnchor=new GPoint(12, 26);
		baseIcon.infoWindowAnchor=new GPoint(12, 8);
        var mySingleIcon=new GIcon(baseIcon, 'http://www.openarchive.co.uk/DesktopModules/DocMap/images/single4.png');

        var marker = new GMarker(point, {icon:mySingleIcon, title:title});
	gmarkers[j] = marker;

        GEvent.addListener(marker, "click", function() {
            var zoom = map.getZoom();
	        var pixels = map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(point.y, point.x), zoom);
	        var _y = pixels.y;
	        var _x = parseInt(pixels.x + 30);
	        var _point = map.getCurrentMapType().getProjection().fromPixelToLatLng(new GPoint(_x, _y), zoom);
	        map.panTo(new GLatLng(_point.lat(), _point.lng()))

            //setMarkerIcons(index);
            if(markerState == 1 && marker.getIcon().image == "http://www.openarchive.co.uk/DesktopModules/DocMap/images/singleicon.png"){ // details are open
                closeDetails(index);
            }
            else { // details are closed
                showDetails(max);
                document.getElementById("details-close").innerHTML = "<img alt=\"Close details\" onclick=\"closeDetails('"+index+"')\" onmouseout=\"this.style.cursor='default'\" onmouseover=\"this.style.cursor='pointer'\" src=\"/DesktopModules/DocMap/images/cross.gif\" border=\"0\" />";
                marker.setImage("http://www.openarchive.co.uk/DesktopModules/DocMap/images/singleicon.png");
            }
          //marker.openInfoWindowHtml(html, {maxWidth:'350', maxContent:max});
        });

//        GEvent.addListener(marker, "click", function() {
//          marker.openInfoWindowHtml(html, {maxWidth:'350', maxContent:max});
//        });

        //gmarkers[j] = marker;
        htmls[j] = max;
        j++;
        return marker;
      }

    function setMarkerIcons(index) {
        for (var i=0; i<gmarkers.length; i++) {
            if (i != index) {
           	gmarkers[i].setImage(gmarkers[i].getIcon().image);
           }
        }
      }

    function showDetails(html) {
        markerState = 1;
        document.getElementById('details-container').style.display = 'block';
	    document.getElementById('details-container').style.visibility = 'visible';
        document.getElementById("details").innerHTML = html;
    }
    
    function closeDetails(index) {
        document.getElementById('details-container').style.display = 'none';
	    document.getElementById('details-container').style.visibility = 'hidden';
        document.getElementById("details").innerHTML = "";
        //gmarkers[index].setImage(gmarkers[index].getIcon().image);
        markerState = 0;
    }

	function toggleOverlay(al){
		var item = document.getElementById('ol'+al);
		var wid = eval('ol'+al);
		if(item.checked){
			map.addOverlay(wid);
		}
		else {
			map.removeOverlay(wid);
		}
	}

	function toggleLayer(layername, cb){
		if(cb.checked){
		    if(layername == "wiki")
		    {
			    map.addOverlay(glWiki);
		    }
		    else if(layername == "pan")
		    {
			    map.addOverlay(glPan);
		    }
		}
		else{
		    if(layername == "wiki")
		    {
    			map.removeOverlay(glWiki);
		    }
		    else if(layername == "pan")
		    {
    			map.removeOverlay(glPan);
		    }
		}
	}

    function Map_Load()
    {
        if (window.GBrowserIsCompatible && GBrowserIsCompatible())
        {
            map = new GMap2(document.getElementById("map"),{draggableCursor: "crosshair", draggingCursor: "move"});
            map.setCenter(new GLatLng(54.70235509327093, -3.2080078125), 6);
            map.addControl(new GLargeMapControl());
		    map.enableDoubleClickZoom();
		    map.enableScrollWheelZoom();
		    map.addControl(new GMapTypeControl());
            map.addMapType(G_PHYSICAL_MAP);
            //map.setMapType(G_PHYSICAL_MAP);
            map.setMapType(G_SATELLITE_MAP);
		    //map.addControl(new GOverviewMapControl());
			var wms0 = new GTileLayer(new GCopyrightCollection(""),1,17);
			wms0.myMercZoomLevel=5;
			wms0.myLayers='Counties_Geographic';
			wms0.myFormat='image/png';
			wms0.myBaseURL='http://84.18.194.196/scripts/mapserv.exe?map=UKCounties.map&';
			wms0.getTileUrl=CustomGetTileUrl;
			wms0.getOpacity = function() {return 0.5;}

			ol2 = new GTileLayerOverlay(wms0);

		    var callbacks = {}
		    map.addControl(
		        new DragZoomControl(
		        {},
		        {buttonStartingStyle: {display:"block",color:"black",background:"white",width:"7em",textAlign:"center",
		        paddingBottom:"2px",fontFamily:"Verdana",fontSize:"12px",fontWeight:"bold",border:"1px solid gray",cursor:"pointer"},
		        buttonHTML: "Drag Zoom",
		        buttonZoomingHTML: 'Drag a region on the map (click here to reset)',
		        buttonZoomingStyle: {background:"yellow"},
		        backButtonHTML: "Drag Zoom Back",
		        backButtonStyle: {display:"none",marginTop:"3px",background:"#FFFFC8"},
		        backButtonEnabled: true,
		        overlayRemoveTime: 1500},
		        callbacks),
		        new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(47,47)));

            GEvent.addListener(map, "zoomend", function(oldLevel,newlevel) {
                    updateStats();
                }
            );
            GEvent.addListener(map, "dragend", function() {
                    updateStats();
                }
            );

		function myClusterClick(args) {
			cluster.defaultClickAction=function(){
				map.setCenter(args.clusterMarker.getLatLng(), map.getBoundsZoomLevel(args.clusterMarker.clusterGroupBounds))
				delete cluster.defaultClickAction;
			}
			var html='<div style="height:8em; overflow:auto; width:24em"><h4>'+args.clusteredMarkers.length+' Locations:</h4>';
			for (i=0; i<args.clusteredMarkers.length; i++) {
				html+='<a href="javascript:cluster.triggerClick('+args.clusteredMarkers[i].index+')">'+args.clusteredMarkers[i].getTitle()+'</a><br />';
			}
			html+='<br /><a href="javascript:void(0)" onclick="cluster.defaultClickAction()">Zoom</a> in to show these locations</div>';
			map.openInfoWindowHtml(args.clusterMarker.getLatLng(), html);
		}
		
		//	create a ClusterMarker
		var baseIcon=new GIcon();
		baseIcon.iconSize=new GSize(25, 28);
		baseIcon.iconAnchor=new GPoint(12, 26);
        	var myClusterIcon=new GIcon(baseIcon, 'http://www.openarchive.co.uk/DesktopModules/DocMap/images/multi4.png');
		cluster=new ClusterMarker(map, {clusterMarkerIcon:myClusterIcon});

		    if (documentId != "" && documentId != null){
			    displaySingleDoc(documentId);
			    updateStats();
		    }
        }
    }

    function updateStats()
    {
        if(markersArray.length > -1)
        {
            var overallcount = markersArray.length;
            var viewcount = 0;
            for (var i=0; i < markersArray.length; i++) 
            {
                if(map.getBounds().contains(markersArray[i].getLatLng()))
                {
                    viewcount = viewcount + 1;
                }
            }
            htcontrol = new HtmlControl("<div style=\"background-color:white;padding:1px;border:solid 1px black;font-family: verdana, helvetica, sans-serif;font-size: 12px;\">Showing "+viewcount+" of "+overallcount+" locations</div>");
            map.addControl(htcontrol, new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(47, 7)));
        }
    }

    function displaySingleDoc(documentId){
		var XmlRequest = GXmlHttp.create();
		var sUrl = "http://www.openarchive.co.uk/DesktopModules/DocMap/GetSingleDocData.ashx?did=" + documentId;
		XmlRequest.open("GET", sUrl, true);
		XmlRequest.onreadystatechange = function () {
		switch (XmlRequest.readyState) {
			case 4:
				var dom = GXml.parse(XmlRequest.responseText);
				var docs = dom.getElementsByTagName("doc");
				var point;
				var index = 0;
				for (j = 0; j < docs.length; j++) {
					var oItem = docs[j];
                    var lat = parseFloat(oItem.getAttribute("lat"));
                    var lng = parseFloat(oItem.getAttribute("lng"));
                    var gr = oItem.getAttribute("gr");
                    var sl = oItem.getAttribute("sl");
                    var locationaddress = oItem.getAttribute("ad");
                    var dyear = oItem.getAttribute("year");
                    var pname = oItem.getAttribute("pname");
                    var duser = oItem.getAttribute("owner");
                    var ddesc = oItem.getAttribute("ddescdisp");
                    var sid = oItem.getAttribute("sdocid");
                    var skey = oItem.getAttribute("sdockey");
                    var docid = documentId;
                    point = new GLatLng(lat,lng);
                    var max = '';
				    max = "<div style=\"font-size:11px;\">";
				    max += "<strong>Location</strong>: " + sl + "<br>";
				    if(gr != "")
				    {
    				    max += "<strong>NGR</strong>: " + gr + "<br />";
				    }
				    else
				    {
				        max += "<strong>Latitude</strong>: " + lat + "<br />";
				        max += "<strong>Longitude</strong>: " + lng;
				    }
   				    max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
				    max += "<strong>Documents/Reports</strong>:<br />"
   				    max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
		            max += "<img align=\"absmiddle\" src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/singleicon.png\" border=\"0\">&nbsp;";
		            max += "<b>" + dyear + " - " + pname + "</b><br />";
		            max += duser + "<br /><br />" + ddesc + "<br /><br /><a title=\"Click here to view the "+pname+" document\" href=\"javascript:void(0);\" onclick=\"ShowScribdPanel('"+sid+"','"+skey+"','"+docid+"')\"><img src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/pdf.gif\" border=\"0\"></a>&nbsp;<a title=\"Click here to view the "+pname+" document\" href=\"javascript:void(0);\" onclick=\"ShowScribdPanel('"+sid+"','"+skey+"','"+docid+"')\">View full document</a><br />";
				    max += "<a title=\"Click here to send a friend a link\" href=\"javascript:void(0);\" onclick=\"ShowEmailPanel('"+docid+"')\"><img src=\"http://www.openarchive.co.uk/DesktopModules/DocMap/images/email_link.gif\" border=\"0\"></a>&nbsp;<a title=\"Click here to send a friend a link\" href=\"javascript:void(0);\" onclick=\"ShowEmailPanel('"+docid+"')\">Send a friend a link</a>";
				    max += "<hr style=\"height:1px;color:#cccccc;background-color:#cccccc;border:none;\" />";
				    max += "</div>";
			        title=sl;
                    var marker = createMarker(point,0,title,max,gmarkers.length);
                    markersArray.push(marker);
				}
                cluster.addMarkers(markersArray);
                cluster.fitMapToMarkers();
                map.savePosition();
                var zoom = map.getZoom();
	            var pixels = map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(point.y, point.x), zoom);
	            var _y = pixels.y;
	            var _x = parseInt(pixels.x + 30);
	            var _point = map.getCurrentMapType().getProjection().fromPixelToLatLng(new GPoint(_x, _y), zoom);
	            map.panTo(new GLatLng(_point.lat(), _point.lng()))
                showDetails(max);
                document.getElementById("details-close").innerHTML = "<img alt=\"Close details\" onclick=\"closeDetails('"+index+"')\" onmouseout=\"this.style.cursor='default'\" onmouseover=\"this.style.cursor='pointer'\" src=\"/DesktopModules/DocMap/images/cross.gif\" border=\"0\" />";
			break;
			}
		}
	XmlRequest.send(null);
    }
	//]]>
