﻿var map = null;
var geocoder = null;

//Nederland
var latStart = 52.045734;
var lonStart = 5.449219;
var zoomStart = 7;

//Amsterdam
latStart = 52.373922404495474;
lonStart = 4.8909759521484375;
zoomStart = 11;

var zoomAfterSearch = 11;
var zoomMin = 9;
var currentIds;
var mymarkers = new Array();

var startAddress = ""; // Wordt gevuld als via querystring een startplaats wordt aangegeven

var mgr;

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
var baseIcon = null;

function seGLoadMetPlaats(plaats) {
    startAddress = plaats;
    if (!gIsLoaded) {
        seGLoad();
        //showAddress(plaats);
    }
    plaatsNaam = "";
}

function seGLoad()
{
    if (GBrowserIsCompatible() && !gIsLoaded)
    {
        baseIcon = new GIcon();
        baseIcon.image = "/images/dwa/markerGroen.png";
        baseIcon.shadow = "/images/dwa/markerSchaduwTrans.png";
        baseIcon.iconSize = new GSize(28, 32);
        baseIcon.shadowSize = new GSize(48, 38);
        baseIcon.iconAnchor = new GPoint(11, 29);
        baseIcon.infoWindowAnchor = new GPoint(12, -2);
        baseIcon.infoShadowAnchor = new GPoint(16, 33);
        
        geocoder = new GClientGeocoder();
        
        if (startAddress != "" && geocoder)
        {
            geocoder.getLatLng(startAddress + ", nederland", function(point) { afterStartAddress(point, zoomStart); });

            try {
                // Zoek opdracht bijhouden in google analytics
                pageTracker._trackPageview("/woningaanbod/zoekactie/" + startAddress);   
            }
            catch (err) {

            }
        }
        

        map = new GMap2(document.getElementById("googleMaps"));
        map.setCenter(new GLatLng(latStart, lonStart), zoomStart);
        map.addMapType(G_PHYSICAL_MAP);
        map.setMapType(G_PHYSICAL_MAP);
        map.enableContinuousZoom();
        map.enableScrollWheelZoom();
        
        mgr = new MarkerManager(map);
        
        // Minimaal zoomlevel instellen
        for (var i = 0; i < map.getMapTypes().length; i++)
        {
            map.getMapTypes()[i].getMinimumResolution = function() { return zoomMin; }
        }
        
        // Markers plaatsen
        placeMarkers();
        
        // Event listener die fired na een beweging en zoom
        GEvent.addListener(map, "moveend", function() { findOnMap() } );
        
        // Initieel ook findOnMap() uitvoeren als er geen startadres is
        if (startAddress == "") { findOnMap(); }
        
        // Boolean op true zetten (zit in dwa.js)
        gIsLoaded = true;
    }
    else
    {
        
    }
}

function placeMarkers()
{
    mymarkers = new Array();
    mgr.clearMarkers();
    
    var glatUPD = new Array();
    glatUPD = glat;
    
    var glongUPD = new Array();
    glongUPD = glong;
    
    var HoofdComplexNaamUPD = new Array();
    HoofdComplexNaamUPD = HoofdComplexNaam;
    
    var HoofdComplexOnyxIdUPD = new Array();
    HoofdComplexOnyxIdUPD = HoofdComplexOnyxId;
    
    for (var i = 0; i < glat.length; i++)
    {
        var point = new GLatLng(glatUPD[i], glongUPD[i]);
        var marker = new createMarker(point, HoofdComplexNaamUPD[i], HoofdComplexOnyxIdUPD[i]);
        
        mymarkers.push(marker);
    }
    
    mgr.addMarkers(mymarkers, zoomMin);  
    mgr.refresh();
}

function findOnMap() {

    try
    {
        var center = map.getCenter();  
        var ids = "";
        
        var bounds = map.getBounds(); // returns the viewport bounds. 
        
        for (var i = 0; i < mymarkers.length; i++) 
        {             
            var point = mymarkers[i].getPoint(); // returns the marker point. 
            if (bounds.contains(point))
            {
                ids += mymarkers[i].vID + ",";
            }
        }
        
        // Alleen AJAX uitvoeren als de markers op de map veranderd zijn
        if (currentIds != ids)
        {
            currentIds = ids;
			// Aanpassing AJAX.NET (Martin, 3-11-2008)
            seDoPageAjaxMgr("move," + ids);
            //sePageAjaxMgr.AjaxRequest("move," + ids);
        }
    }
    catch (err)
    {

    }
}

// Creates a marker whose info window displays
// the letter corresponding to the given index
function createMarker(point, label, ID)
{
    var myIcon = new GIcon(baseIcon);
    
    var marker = new GMarker(point, {icon: myIcon, draggable: false});
    marker.vNaam = label;
    marker.vID = ID;
    marker.vHTML = "<div style=\"font: Tahoma;\"><b>" + label + "</b></div>";
    
    GEvent.addListener(marker, "mouseover", function() { markerMouseOver(marker.vID) });
    GEvent.addListener(marker, "mouseout", function() { markerMouseOut(marker.vID) });  
    GEvent.addListener(marker, "click", function() { markerClick(marker.vID, true) });
    
    return marker;
}

function markerMouseOver(theId)
{   
    for (var i = 0; i < mymarkers.length; i++)
    {
        if (mymarkers[i].vID == theId)
        {
            try { mymarkers[i].setImage("/images/dwa/markerSelect.png"); }   
            catch (err) { }
            
            var pnl = document.getElementById("pnl_" + mymarkers[i].vID);
            if (pnl)
            {
                pnl.style.background = "#f0f0f0";
                var selectPnl = document.getElementById("projectpnl_" + theId + "_selecteerDiv");
                var meerInfoPnl = document.getElementById("projectpnl_" + theId + "_meerInfoDiv");
                if (selectPnl) selectPnl.style.visibility = 'visible';
                if (meerInfoPnl) meerInfoPnl.style.visibility = 'visible';
            }
            
            break;
        }
    }
}

function markerMouseOut(theId)
{   
    for (var i = 0; i < mymarkers.length; i++)
    {
        if (mymarkers[i].vID == theId)
        {
            try { mymarkers[i].setImage("/images/dwa/markerGroen.png"); }   
            catch (err) { }
            
            var pnl = document.getElementById("pnl_" + mymarkers[i].vID);
            if (pnl)
            {
                pnl.style.background = "";
                var selectPnl = document.getElementById("projectpnl_" + theId + "_selecteerDiv");
                var meerInfoPnl = document.getElementById("projectpnl_" + theId + "_meerInfoDiv");
                if (selectPnl && selectPnl.className != "selecteerDivActive") selectPnl.style.visibility = 'hidden';
                if (meerInfoPnl) meerInfoPnl.style.visibility = 'hidden';
            }
            
            break;
        }
    }
}

function markerClick(theId, clickFromMarker)
{      
    if (clickFromMarker == true)
    {
        var found = false;
        var tel = 0;
        var navRoot = document.getElementById("searchResultsContent");
        
        for (i = 0; i < navRoot.childNodes.length; i++)
        {
            var obj = navRoot.childNodes[i];
            
            if (obj.className == "dwaProjectOverzichtOmvat")
            {
                tel++;
            }
            
            if (obj.id == "pnl_" + theId)
            {
                found = true;
                tel--;
                break;
            }
        }
        
        if (found)
        {
            // Naar het (reeds getekende) zoekitem scrollen
            scrollTo(tel * 138);
        }
        else
        {
            // Eerst alle zoekitems tekenen
            // Dan naar het (getekende) zoekitem scrollen

			// Aanpassing AJAX.NET (Martin, 3-11-2008)
            seDoPageAjaxMgr("scrollto," + theId);
            //sePageAjaxMgr("scrollto," + theId);
        }
    }
}

function showAddress(a)
{ 
    if (a != "" && geocoder)
    {
        geocoder.getLatLng(a + ", nederland", function(point) { afterShowAddress(point); });

        try {
            // Zoek opdracht bijhouden in google analytics
            pageTracker._trackPageview("/woningaanbod/zoekplaats/" + a);
            
        }
        catch (err) {

        }
    }
}

function afterShowAddress(point)
{
    if (!point)
    {
        alert("De ingevoerde locatie werd niet gevonden.");
    }
    else
    {               
        map.setCenter(point, zoomAfterSearch);
        slideToDWA();
    }
}

function afterStartAddress(point)
{
    if (point)
    {
        map.setCenter(point, zoomStart);
    }
    else
    {
        findOnMap();
    }
}

function googleLeft()
{
    map.panDirection(1, 0);
}

function googleRight()
{
    map.panDirection(-1, 0);
}

function googleUp()
{
    map.panDirection(0, 1);
}

function googleDown()
{
    map.panDirection(0, -1);
}

function googleZoomIn()
{
    map.zoomIn();
}

function googleZoomOut()
{
    map.zoomOut();
}

function googleSwap(obj, swapBack)
{
    if (swapBack == true)
        obj.src = obj.src.replace("H.gif", ".gif");
    else
        obj.src = obj.src.replace(".gif", "H.gif");
}
