﻿var map = null;
var rMarker = null;
var bounds = null;
var geocoder = null;
var reloaded = false;
//<![CDATA[
var x = 0;
var y = 0;
var zoom = 7;
var imageIcon = 'http://www.postbankeneiendom.no/gfx/kart_marker.png';

function ShowOnOff(element) {
    var pause = document.getElementById(element);
    if (pause) {
        switch (pause.style.display) {
            case 'block':
                pause.style.display = 'none';
                break;
            case 'none':
                pause.style.display = 'block';
                break;
            default:
                pause.style.display = 'block';
                break;
        }
    }
}

function AjaxPauseWindow() {
    ShowOnOff('divGooglePause');
}

function load() {
    AjaxPauseWindow();
    setTimeout(initGmap, 5000);
}

function initGmap() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById('divGoogleMap'));
        bounds = new GLatLngBounds();
        geocoder = new GClientGeocoder();
        map.addControl(new GLargeMapControl());
        map.setCenter(new GLatLng(59.913041, 10.739822), 7);
        if (AddAllMarkers != undefined) {
            AddAllMarkers();
        }
        AjaxPauseWindow();
    }
}

function ReLoadGMap() {
    if (!reloaded) {
        load();
        reloaded = true;
    }
}

function CreateMarker(point, html) {
    if (html.length > 0) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(html);
        });
        return marker;
    }
    else {
        new GMarker(point)
    }
}

function ShowPointer() {
    var point = new GLatLng(x, y);
    AddSimpleMarker(point);
}

function AddMarker(lat, lng, info) {
    var point = new GLatLng(lat, lng);
    AddSimpleMarker(point, info);
}

function AddGeoMarker(address, info) {
    if (geocoder) {
        geocoder.getLatLng(
                    address,
                    function(point) {
                        if (point) {
                            AddSimpleMarker(point, info);
                        }
                    });
    }
    else {
        alert("ERROR: GEOCODER");
    }
}

function CreateMarker(point) {
    if (point) {
        var icon = new GIcon();
        icon.image = imageIcon;
        icon.iconSize = new GSize(15, 15);
        icon.iconAnchor = new GPoint(0, 0);
        icon.infoWindowAnchor = new GPoint(10, 1);
        var marker = new GMarker(point, icon);
        return marker;
    }
    return null;
}

function AddRememberMarker(point){
    if (map){
        if (point) {
            bounds = new GLatLngBounds();
            if (!rMarker) {
                rMarker = CreateMarker(point);
            }
            else {
                rMarker.setPoint(point);
            }
            if (rMarker) {
                bounds.extend(point);
                map.addOverlay(rMarker);
                SetCenter(point.lat(), point.lng());
            }
        }
    }
}

function AddRememberClick(point) {
    if (map) {
        if (point) {
            bounds = new GLatLngBounds();
            if (!rMarker) {
                rMarker = CreateMarker(point);
            }
            else {
                rMarker.setPoint(point);
            }
            if (rMarker) {
                bounds.extend(point);
                map.addOverlay(rMarker);
            }
        }
    }
}

function AddSimpleMarker(point, info) {
    if (!map) {
        alert("GOOGLE MAP IS NOT WORKING");
    }
    else {
        if (!point) {
            alert("ERROR: POINTER");
        }
        else {
            var marker = CreateMarker(point);
            bounds.extend(point);
            if (info.length != undefined) {
                if (info.length > 0) {
                    GEvent.addListener(marker, "click", function() {
                        marker.openInfoWindowHtml(info);
                    });
                }
            }
            map.addOverlay(marker);
        }
    }
}

function SetCenter(lat, lng) {
    if (map && bounds) {
        zoom = map.getBoundsZoomLevel(bounds);
        map.setCenter(new GLatLng(lat, lng), zoom);
    }
}

