﻿/************ Googlemap javascript ******************/
var gMaps = true;
var longitude = 0;
var latitude = 0;
var zoom = 0;
var _clusterer;
var _markers;

function initGoogleMaps() 
{
    if (GBrowserIsCompatible()) 
    {
        longitude = (longitude != 0) ? longitude : 4
        latitude = (latitude != 0) ? latitude : 51
        zoom = (zoom != 0) ? zoom : 4

        var latlng = new GLatLng(latitude, longitude);
        map = new GMap2(pnlGoogleMaps);
        map.setCenter(latlng);

        var ui = map.getDefaultUI();
        ui.maptypes.normal = true;
        ui.maptypes.satellite = true;
        ui.maptypes.hybrid = true;
        ui.maptypes.physical = true;
        ui.zoom.scrollwheel = true;
        ui.zoom.doubleclick = true;
        ui.controls.largemapcontrol3d = true;
        ui.controls.maptypecontrol = true;
        ui.controls.scalecontrol = true;
        map.setUI(ui);
        map.setZoom(2);

        map.enableRotation();
        map.disableInfoWindow();
        map.enableDoubleClickZoom();
        map.enableContinuousZoom();

        startGoogleMapLoader();
        BuildGoogleMaps();
    }
}

var prevDiv=null;
function showProperty(LatLng) 
{
    var marker = findMarker(LatLng);
    var divs = findPropertyDIV();

    //if(prevDiv==null){
        prevDiv = divs[0];
    //}

    for (var i = 0; i < divs.length; i++) 
    {
        if (divs[i].getAttribute('fid') == marker.fid) 
        {
            if (divs[0] != divs[i])
            {
                //loadGMProperty(divs[i]);
                //unloadGMProperty(prevDiv);
                setDivIndex(divs[i], prevDiv);
                prevDiv = divs[i];
            }
            else
            {
                //loadGMProperty(divs[i]);
                //prevDiv = divs[i];
            }
        }
    }
}

function loadGMProperty(el)
{
    var lstTd = el.getElementsByTagName('td');
    for (var i = 0; i < lstTd.length; i++)
    {
        if (lstTd[i].className == 'tdPandGroenTop' || lstTd[i].className == 'tdPandDgrijsTop' || lstTd[i].className == 'tdPandLgrijsTop')
        {
            lstTd[i].className = 'tdPandGMTop';
        }
        if (lstTd[i].className == 'tdPandGroenContent' || lstTd[i].className == 'tdPandDgrijsContent' || lstTd[i].className == 'tdPandLgrijsContent')
        {
            lstTd[i].className = 'tdPandGMContent';
        }
        if (lstTd[i].className == 'tdPandGroenBottom' || lstTd[i].className == 'tdPandDgrijsBottom' || lstTd[i].className == 'tdPandLgrijsBottom')
        {
            lstTd[i].className = 'tdPandGMBottom';
        }
    }
}

function unloadGMProperty(el)
{
    var lstTd = el.getElementsByTagName('td');
    var color = DefineLayoutColor();
    for (var i = 0; i < lstTd.length; i++)
    {
        if (lstTd[i].className == 'tdPandGMTop')
        {
            lstTd[i].className = 'tdPand' + color + 'Top';
        }
        if (lstTd[i].className == 'tdPandGMContent')
        {
            lstTd[i].className = 'tdPand' + color + 'Content';
        }
        if (lstTd[i].className == 'tdPandGMBottom')
        {
            lstTd[i].className = 'tdPand' + color + 'Bottom';
        }
    }
}

function DefineLayoutColor()
{
    var pl = gup('pl');
    if (pl == 1)
    {
        return "Groen";
    }
    else if (pl == 2)
    {
        return "Lgrijs";
    }
    else if (pl == 3)
    {
        return "Groen";
    }
    else if (pl == 4)
    {
        return "Dgrijs";
    }
    else
    {
        return "Groen";
    }
}

function setDivIndex(newdiv, olddiv)
{
    var lstTd = document.getElementById('tblPandenMain').getElementsByTagName('td');
    for (var i = 0; i < lstTd.length; i++)
    {
        if (lstTd[i].getElementsByTagName('div')[0] == newdiv)
        {
            lstTd[i].appendChild(olddiv);
            lstTd[0].appendChild(newdiv);
            return false;
        }
    }
}
function showProperty_detail(LatLng) 
{
    var marker = findMarker(LatLng);
    var divs = findPropertyDIV();
    location.href = "detalhe_imovel.aspx?pandid=" + marker.fid;
}

function findMarker(LatLng) 
{
    for (var i = 0; i < _markers.length; i++) 
    {
        if (LatLng.equals(_markers[i].getLatLng())) 
        {
            return _markers[i];
        }
    }
}

function findPropertyDIV() 
{
    var divs = new Array();
    var lis = document.getElementsByTagName('div');
    var iCount = 0;
    for (var e = 0; e < lis.length; e++) 
    {
    if(lis[e].attributes["fid"]){
        if (lis[e].id.search('dvPand') != -1) 
        {
            divs[iCount] = lis[e];
            iCount++;
        }
        }
    }
    return divs;
}

function BuildGoogleMaps() 
{
    try 
    {
        var divs = document.getElementsByTagName('div');
        var markers = [];
        if (_markers) 
        { 
            map.clearOverlays(); 
        }

        var divPanden = findPropertyDIV();
        for (var i = 0; i < divPanden.length; i++) 
        {
            var icon = new GIcon(G_DEFAULT_ICON);
            icon.image = '/imgsite/icone.gif';
            icon.iconSize = new GSize(25, 32);
            icon.shadowSize = null;
            icon.shadow = null;
            var lat = parseFloat(divPanden[i].getAttribute('lat'));
            var lng = parseFloat(divPanden[i].getAttribute('lng'));
            var latlng = new GLatLng(lat, lng);
            var marker = new GMarker(latlng, { icon: icon, draggable: false });
            marker.fid = divPanden[i].getAttribute('fid');
            markers.push(marker);
            if (divPanden.length < 5000) 
            { 
                map.addOverlay(marker) 
            };
            GEvent.addListener(marker, "mouseover", showProperty);
            GEvent.addListener(marker, "click", showProperty_detail);
        }
        if (_markers) 
        { 
            _markers = new Array; 
        }
        _markers = markers;
        if (divPanden.length >= 5000) 
        {
            if (_clusterer) 
            { 
                _clusterer.clearMarkers(); 
            }
            _clusterer = new MarkerClusterer(map, _markers);
        }
        endGoogleMapLoader();
        FitGoogleMaps();
        if (divPanden.length == 1) 
        {
            map.setZoom(15);
        }
    } 
    catch (ex) 
    { 
        alert(ex); 
    }
}

function FitGoogleMaps() 
{
    if (_markers) 
    {
        var bounds = new GLatLngBounds();
        for (var e = 0; e < _markers.length; e++) 
        {
            var latLng = _markers[e].getLatLng();
            if (latLng) 
            {
                var lat = latLng.lat();
                var lng = latLng.lng();
                if (_markers.length == 1) 
                {
                    lat = lat + 0.004;
                    lng = lng - 0.012;
                }
                if(lat != 0) {
                    bounds.extend(new GLatLng(lat, lng));
                }
            }
        }
        var zoomLevel = map.getBoundsZoomLevel(bounds);
        map.setCenter(bounds.getCenter());
        map.setZoom(zoomLevel);
    }
}

var loader;
function startGoogleMapLoader() 
{
    if (!loader) 
    {
        loader = new GScreenOverlay('../Imgsite/ajax-loader.gif', new GScreenPoint(570, 210, 'pixels', 'pixels'), new GScreenPoint(0, 0), new GScreenSize(55, 55, 'pixels', 'pixels')); map.addOverlay(loader);
    }
    loader.show();
}

function endGoogleMapLoader() 
{
    if (loader) 
    {
        loader.hide();
    }
}
