﻿function placeMarkerAtPoint(point, info) {
    //map.setCenter(new GLatLng(loadPoint.lat(), loadPoint.lng()), 5, G_NORMAL_MAP);
    //map.setCenter(point, 15, G_NORMAL_MAP);
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(info);
    });
    map.addOverlay(marker);
}

function setCenterToPoint(point, zoom) {
    map.setCenter(point, zoom, G_NORMAL_MAP);
}

function calculateCenterPoint(points) {
    var minX,minY,maxX,maxY;
    minX = Number.MAX_VALUE;
    maxX = Number.MIN_VALUE;
    minY = Number.MAX_VALUE;
    maxY = Number.MIN_VALUE;
    if (points && points.length > 0) {
        for (var idx = 0; idx < points.length; idx++) {
            if (0 == idx) {
                minX = points[idx].lat();
                minY = points[idx].lat();
                maxX = points[idx].lng();
                maxY = points[idx].lng();
            }
            if (minX > points[idx].lat()) minX = points[idx].lat();
            if (maxX < points[idx].lat()) maxX = points[idx].lat();
            if (minY > points[idx].lng()) minY = points[idx].lng();
            if (maxY < points[idx].lng()) maxY = points[idx].lng();
        }
    }
    var distX = maxX - minX;
    var distY = maxY - minY;
    //alert(distX);
    if      (0     == distX                 ) loadZoom = 15;
    else if (0     <= distX && 0.05  > distX) loadZoom = 13;
    else if (0.05  <= distX && 0.1   > distX) loadZoom = 11;
    else if (0.1   <= distX && 0.2   > distX) loadZoom = 9;
    else if (0.2   <= distX && 0.4   > distX) loadZoom = 7;
    else if (0.4   <= distX && 0.8   > distX) loadZoom = 5;
    else loadZoom = 5;
    return new GLatLng(minX + (distX / 2), minY + (distY / 2));
}

function mapLoad() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("GoogleMap"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        if (points && points.length > 0) {
            setCenterToPoint(calculateCenterPoint(points), loadZoom);
            for (var idx = 0; idx < points.length; idx++) placeMarkerAtPoint(points[idx], infos[idx]);
        }
        else {
            setCenterToPoint(loadPoint, loadZoom);            
        }
    }
}

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

function addUnLoadEvent(func) {
    var oldonunload = window.onunload;
    if (typeof window.onunload != 'function') {
        window.onunload = func;
    } else {
        window.onunload = function() {
            oldonunload();
            func();
        }
    }
}
