﻿    //<![CDATA[
    var icon;
    var map;
    var directions, routepanel, route;
    var startMarker;
    var gAutoPrint = false; // Flag for whether or not to automatically call the print function

    function addDevelopments(map) { }
    
    function positionOverview(x,y) {
      var omap=document.getElementById("map_overview");
      omap.style.left = x+"px";
      omap.style.top = y+"px";
      // == restyling ==
      omap.firstChild.firstChild.style.left="0px";
      omap.firstChild.firstChild.style.top="0px";
      omap.firstChild.firstChild.style.width="200px";
      omap.firstChild.firstChild.style.height="200px";
    }
   function defineIcon()
   {
      // Create our "tiny" marker icon
      icon = new GIcon();
      icon.image = "/assets/images/maps/pointer_small.png";
      icon.shadow = "/assets/images/maps/mm_20_shadow.png";
      icon.iconSize = new GSize(12, 20);
      icon.shadowSize = new GSize(22, 20);
      icon.iconAnchor = new GPoint(6, 20);
      icon.infoWindowAnchor = new GPoint(5, 1);
   }
    function addDragFunctions(m)
    {
      GEvent.addListener(m, "dragstart", function() {
          map.closeInfoWindow();
          document.getElementById("txtDevelopment").value="";
          });
      GEvent.addListener(m, "dragend", function() {
          //m.openInfoWindowHtml("New co-ordinates:<br/>" + m.getPoint() + "");
          document.getElementById("txtDevelopment").value=m.id;
          document.getElementById("txtLatitude").value = getMapPoint("'" + m.getPoint() + "'", "latitude");
          document.getElementById("txtLongitude").value = getMapPoint("'" + m.getPoint() + "'", "longitude");
          wgs84=new GT_WGS84();
          var _longitude = document.getElementById("txtLongitude").value
          var _latitude = document.getElementById("txtLatitude").value
          wgs84.setDegrees(_latitude, _longitude);
          osgb=wgs84.getOSGB()
          gridref = osgb.getGridRef(6);
          //alert(gridref);
          //document.getElementById("txtTo").value = _latitude + "," + _longitude
          //get prefix letters at start of ref and convert to prefixNumbers
          var prefixNumbers = new Array();
          prefixNumbers = convertGridLetters(gridref.substring(0,2));
          
          //separate northing and easting numbers
          var numbers = new Array();
          numbers = convertGridNumbers(gridref);
          
          document.getElementById("txtNorthing").value = prefixNumbers[1].replace(",","") + numbers[2]; 
          document.getElementById("txtEasting").value = prefixNumbers[0].replace(",","") + numbers[1];
          });
      return m;
    }
        
    function convertGridNumbers(_gridref)
    {
      var _temp = new Array();
      _temp = _gridref.split(" ");
      return _temp;
    }
    
    function convertGridLetters(_letters)
    {
      var _numbers;
      var _ret = new Array();
      switch(_letters)
      {
        case "SV":
          _numbers = "0,0";
          break;
        case "SW":
          _numbers = "1,0";
          break;
        case "SX":
          _numbers = "2,0";
          break;
        case "SY":
          _numbers = "3,0";
          break;
        case "SZ":
          _numbers = "4,0";
          break;
        case "TV":
          _numbers = "5,0";
          break;
        case "SR":
          _numbers = "1,1";
          break;
        case "SS":
          _numbers = "2,1";
          break;
        case "ST":
          _numbers = "3,1";
          break;
        case "SU":
          _numbers = "4,1";
          break;
        case "TQ":
          _numbers = "5,1";
          break;
        case "TR":
          _numbers = "6,1";
          break;
        case "SM":
          _numbers = "1,2";
          break;
        case "SN":
          _numbers = "2,2";
          break;
        case "SO":
          _numbers = "3,2";
          break;
        case "SP":
          _numbers = "4,2";
          break;
        case "TL":
          _numbers = "5,2";
          break;
        case "TM":
          _numbers = "6,2";
          break;
        case "SG":
          _numbers = "1,3";
          break;
        case "SH":
          _numbers = "2,3";
          break;
        case "SJ":
          _numbers = "3,3";
          break;
        case "SK":
          _numbers = "4,3";
          break;
        case "TF":
          _numbers = "5,3";
          break;
        case "TG":
          _numbers = "6,3";
          break;
        case "SC":
          _numbers = "2,4";
          break;
        case "SD":
          _numbers = "3,4";
          break;
        case "SE":
          _numbers = "4,4";
          break;
        case "TA":
          _numbers = "5,4";
          break;
        case "NW":
          _numbers = "1,5";
          break;
        case "NX":
          _numbers = "2,5";
          break;
        case "NY":
          _numbers = "3,5";
          break;
        case "NZ":
          _numbers = "4,5";
          break;
        case "OV":
          _numbers = "5,5";
          break;
        case "NR":
          _numbers = "1,6";
          break;
        case "NS":
          _numbers = "2,6";
          break;
        case "NT":
          _numbers = "3,6";
          break;
        case "NU":
          _numbers = "4,6";
          break;
        case "NL":
          _numbers = "0,7";
          break;
        case "NM":
          _numbers = "1,7";
          break;
        case "NN":
          _numbers = "2,7";
          break;
        case "NO":
          _numbers = "3,7";
          break;
        case "NF":
          _numbers = "0,8";
          break;
        case "NG":
          _numbers = "1,8";
          break;
        case "NH":
          _numbers = "2,8";
          break;
        case "NJ":
          _numbers = "3,8";
          break;
        case "NK":
          _numbers = "4,8";
          break;
        case "NA":
          _numbers = "0,9";
          break;
        case "NB":
          _numbers = "1,9";
          break;
        case "NC":
          _numbers = "2,9";
          break;
        case "ND":
          _numbers = "3,9";
          break;
        case "HY":
          _numbers = "3,10";
          break;
        case "HZ":
          _numbers = "4,10";
          break;
        case "HT":
          _numbers = "3,11";
          break;
        case "HU":
          _numbers = "4,11";
          break;
        case "HP":
          _numbers = "4,12";
          break;
        default:
          break;
      }
      _ret[0] = _numbers.substring(0,1);
      _ret[1] = _numbers.substring(1,_numbers.length);
      return _ret;
    }
    
    function getMapPoint(_point, _whichOne)
    {
      var temp = new Array();
      _point = _point.replace("(","");
      _point = _point.replace(" ","");
      _point = _point.replace("'","");
      _point = _point.replace("'","");
      _point = _point.replace(")","");
      temp = _point.split(',');
      switch(_whichOne)
      {
        case "longitude":
          return temp[1]
          break;
        case "latitude":
          return temp[0]
          break;
         default:
          return 0;
      }
    }
    
    function convertValues()
    {
      document.getElementById("txtNorthing").value="";
      document.getElementById("txtEasting").value="";
    }

    function createSearchTextMarker(point, text, _id, comingsoon) {
        var icon = new GIcon();
        if(comingsoon)
            icon.image = "/assets/images/maps/comingsoon.png";
        else
            icon.image = "/assets/images/maps/currentdevelopment.png";


        icon.size = new GSize(43, 50);
        icon.iconAnchor = new GPoint(15, 47);
        icon.infoWindowAnchor = new GPoint(30, 9);
        icon.shadow = "/assets/images/maps/shadow.png";
        icon.shadowSize = new GSize(43, 50);

        var marker = new GMarker(point, { icon: icon, draggable: false });

        marker.id = _id;
        //marker.tooltip = '<div style=\"height:150px;width:300px;background-color:white;border:solid 1px red;\">THIS IS MY <strong>TOOL TIP</strong></div>';
        //addDragFunctions(marker);
//        GEvent.addListener(marker, "mouseover", function() {
//            marker.openInfoWindowHtml(text, { maxWidth: 140 });
//        });
//        GEvent.addListener(marker, "mouseout", function() {
//            //tooltip.style.visibility = "hidden";
//        });
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(text, { maxWidth: 140 });
            //showTooltip(marker);
            //marker.openInfoWindowHtml(text,{maxWidth:140});
            //testme(text);
        });
      
      return marker;
  }
  function testme(text) {
      alert(text);
  }
  function showTooltip(marker) {
      tooltip.innerHTML = marker.tooltip;
      var point = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0, 0), true), map.getZoom());
      var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(), map.getZoom());
      var anchor = marker.getIcon().iconAnchor;
      var width = 20;
      var height = 40;
      var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y - anchor.y - height));
      pos.apply(tooltip);
      tooltip.style.visibility = "visible";
  }

    function createBlankMarker(point, text, _id) {
        var icon = new GIcon();
        icon.image = "/assets/images/maps/blankmarker.png";
        icon.size = new GSize(43, 50);
        icon.iconAnchor = new GPoint(15, 47);
        icon.infoWindowAnchor = new GPoint(30, 9);
        icon.shadow = "/assets/images/maps/shadow.png";
        icon.shadowSize = new GSize(43, 50);
        
        var marker = new GMarker(point, { icon: icon, draggable: false });
        marker.id = _id;
        //addDragFunctions(marker);
        return marker;
    }

    function createMicrositeTextMarker(point, text, _id, micrositeStatus) {
        var icon = new GIcon();
        if (micrositeStatus == "Live")
            icon.image = "/assets/images/maps/currentdevelopment.png";
        else
            icon.image = "/assets/images/maps/comingsoon.png";

        icon.size = new GSize(43, 50);
        icon.iconAnchor = new GPoint(15, 47);
        icon.infoWindowAnchor = new GPoint(30, 9);
        icon.shadow = "/assets/images/maps/shadow.png";
        icon.shadowSize = new GSize(43, 50);
                
        var marker = new GMarker(point, { icon: icon, draggable: false });
        marker.id = _id;
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(text, { maxWidth: 140 });
        });
        return marker;
    }

    function createTextMarker(point, text, _id) {
      var marker = new GMarker(point, {icon:icon, draggable: false});
      marker.id = _id;
      GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(text,{maxWidth:140});
      });
      return marker;
    }

    /* This requires the Google AJAX API */
    /* eg. 
    <script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=*KEY*" type="text/javascript"></script>
    */
    function usePointFromPostcode(postcode) {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, function() {
            if (localSearch.results[0]) {
                var resultLat = localSearch.results[0].lat;
                var resultLng = localSearch.results[0].lng;
                var point = new GLatLng(resultLat, resultLng);
                var marker = new GMarker(point, icon);
                map.addOverlay(marker);
                map.setCenter(point, 15, G_NORMAL_MAP);
            } else {
                alert("Postcode not found!");
            }
        });
        localSearch.execute(postcode + ", UK");
    }

    function addLocalAreaMarker(point, text, _id, category, subcategory) {
            var icon = new GIcon();
            icon.image = "/assets/images/maps/" + subcategory.replace(" ", "") + ".png";
            icon.size = new GSize(43, 50);
            icon.iconAnchor = new GPoint(15, 47);
            icon.infoWindowAnchor = new GPoint(30, 9);
            icon.shadow = "/assets/images/maps/shadow.png";
            icon.shadowSize = new GSize(43, 50);

            var marker = new GMarker(point, { icon: icon, draggable: false });
            marker.id = _id;
            marker.mycategory = category;
            marker.mysubcategory = subcategory;
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(text, { maxWidth: 140 });
            });
            gmarkers.push(marker);
            map.addOverlay(marker);
    }
    // == shows all markers of a particular category, and ensures the checkbox is checked ==
    function show(category) {
        for (var i = 0; i < gmarkers.length; i++) {
            if (gmarkers[i].mycategory == category) {
                gmarkers[i].show();
            }
        }
        // == check the checkbox ==
        //document.getElementById(category + "box").checked = true;
    }

    // == hides all markers of a particular category, and ensures the checkbox is cleared ==
    function hide(category) {
        for (var i = 0; i < gmarkers.length; i++) {
            if (gmarkers[i].mycategory == category) {
                gmarkers[i].hide();
            }
        }
        // == close the info window, in case its open on a marker that we just hid
        map.closeInfoWindow();
    }

    // == a checkbox has been clicked ==
    function boxclick(box, category) {
        if (box.checked) {
            show(category);
            // == clear the checkbox ==
            //document.getElementById(box).checked = true;            
        } else {
            hide(category);
            //document.getElementById(box).checked = false;
        }
    }
