﻿// JScript File
var map = null;
var id;
var selectedMarker = null;
var selectedHtml = null;
var markers = null;
var categoriesNotSelected = false;
var selectedCategories = 0;
var lat;
var lon;
var zoom = 13;
var admin = 'false';
var relpath = '';

function ShowMap() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(lat, lon), zoom);
        var postVars = "lat=" + lat + "&lon=" + lon + "&admin=" + admin;
        BpDownloadUrl(relpath + 'Webservice/LocatieService.asmx/GetLocaties',processData,onError,postVars);
        }
    }
    
function processData(data) 
{  
    var xml = GXml.parse(data);
    markers = xml.documentElement.getElementsByTagName("Locatie");
    processMarkers();
}

function SelectAllCatCheckboxes(check)
{
    var catCheckBoxes=document.getElementsByName("categorie");
    
    if(catCheckBoxes != null)
    {
        for (var i = 0; i < catCheckBoxes.length; i++) 
        {
            catCheckBoxes[i].checked = check;
        }
    }
}

function processMarkers()
{
    map.clearOverlays();
    
    var catCheckBoxes=document.getElementsByName("categorie");
    categoriesNotSelected = false;
    selectedCategories = 0;
    
    if(catCheckBoxes != null)
    {
        for (var i = 0; i < catCheckBoxes.length; i++) 
        {
            if(catCheckBoxes[i].checked)
                selectedCategories += Math.pow(2, catCheckBoxes[i].value);
            else
                categoriesNotSelected = true;
        }
    }
    
    for (var i = 0; i < markers.length; i++) 
    {   
        var marker = createMarker(markers[i]);
        
        if(marker != null) 
            map.addOverlay(marker);  
    }
    if(selectedMarker != null)
    {
        selectedMarker.openInfoWindowHtml(selectedHtml, {maxWidth: 300});
        selectedMarker = null;
        id = 0;
    }
 }
 
 function isChecked(categorieIDNumber)
 {
    if(categoriesNotSelected == false)
        return true;
        
    if(categorieIDNumber == 0)
        return true;
    
    if((categorieIDNumber & selectedCategories) > 0)
        return true;
    else
        return false;
 }
 
 // Creates a marker at the given point with the given number label
 function createMarker(markerXmlNode) 
 {  
    var marker = null;
    
    var lat = parseFloat(markerXmlNode.getAttribute("lat"));
    var lon = parseFloat(markerXmlNode.getAttribute("lng"));
    var categorieIDNumber = parseInt(markerXmlNode.getAttribute("CategorieID"));
    var locatieID = markerXmlNode.getAttribute("LocatieID");
    var html = markerXmlNode.getAttribute("HTML");
    
    if(isChecked(categorieIDNumber))
    {
        var point = new GLatLng(lat, lon);  
        marker = new GMarker(point);
        GEvent.addListener(marker, "mouseover", 
            function() 
            {    
                marker.openInfoWindowHtml(html, {maxWidth: 300});
            }
         );  
         
         if(id == locatieID)
         {
            map.setCenter(new GLatLng(lat, lon), 15);
            selectedMarker = marker;
            selectedHtml = html;
         }
     }
     return marker;
 }
 
function onError(request) {
  alert(request.status + " " + request.statusText);
}


