﻿var map;
var geocoder = null;
var latG;
var longG;
var paddress;

function initialize() {

    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(-26, 133), 2);

    var customUI = map.getDefaultUI();
    customUI.maptypes.hybrid = false;
    map.setUI(customUI);
}

function initializeCustom(latv, longv, zv) {

    map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(latv, longv), zv);

    var customUI = map.getDefaultUI();
    customUI.maptypes.hybrid = false;
    map.setUI(customUI);
}

function addSimpleMarkers(locations) {
    var locs_array = locations.split("|");
    var locs_hash_array = new Array();

    for (var i in locs_array) {
        locs_hash_array[locs_array[i]] = locs_array[i];
    }

    map.clearOverlays();

    for (var i in locs_hash_array) {
        fields = locs_hash_array[i].split("~");
        markSingleLoc('', '', '', '', fields[0], fields[1], false, false);
    }
}

function addMarkers(locations) {
    var locs_array = locations.split("|");
    var locs_hash_array = new Array();

    for (var i in locs_array) {
        locs_hash_array[locs_array[i]] = locs_array[i];
    }

    map.clearOverlays();

    for (var i in locs_hash_array) {
        fields = locs_hash_array[i].split("~");
        markSingleLoc(fields[0], fields[1], fields[2], fields[3], fields[4], fields[5], false, true);
    }
}

function markLocation(pemail, pdivision, pphone, pdisplayAddress, plat, plong) {
    map.clearOverlays();
    document.getElementById('map_canvas').focus();
    markSingleLoc(pemail, pdivision, pphone, pdisplayAddress, plat, plong, true, true);
}

function markSingleLoc(pemail, pdivision, pphone, pdisplayAddress, plat, plong, showExtra, showPanel) {

    //    alert("Lat: " + plat);
    //    alert("Long: " + plong);
    var point = new GLatLng(plat,
                        plong);
    var marker = new GMarker(point);
    map.addOverlay(marker);

    var extraInfo = '';
    if (pdisplayAddress) {
        extraInfo += '<h5>Address:</h5>' + pdisplayAddress;
    }
    if (pemail) {
        extraInfo += '<h5>Email:</h5>' + pemail;
    }
    if (pdivision) {
        extraInfo += '<h5>Division:</h5>' + pdivision;
    }
    if (pphone) {
        extraInfo += '<h5>Phone:</h5>' + pphone;
    }

    if (showPanel) {
        if (showExtra) {
            GEvent.addListener(marker, "click", function () { marker.openInfoWindowHtml(extraInfo); });
            marker.openInfoWindowHtml(extraInfo);
            map.setCenter(new GLatLng(plat, plong), 16);
        }
        else {
            GEvent.addListener(marker, "click", function () {
                map.openInfoWindowHtml(point, extraInfo);
                map.setCenter(new GLatLng(plat, plong), 16);
            });
        }
    }
}

function findLocation(addressVal, latName, longName) {
    paddress = addressVal;
    latG = latName;
    longG = longName;
    geocoder = new GClientGeocoder();
    geocoder.getLocations(paddress, addAddressToMap);
}

function addAddressToMap(response) {
    map.clearOverlays();
    if (!response || response.Status.code != 200) {
        alert("Sorry, we were unable to geocode as this address: " + paddress);
    } else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);
        marker = new GMarker(point);
        map.addOverlay(marker);
        map.setCenter(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]), 16);

        var latField = document.getElementById(latG);
        var longField = document.getElementById(longG);

        latField.value = place.Point.coordinates[1];
        longField.value = place.Point.coordinates[0];
    }
}

function addAddressToAreaMap(response) {
    if (!response || response.Status.code != 200) {
        //
    } else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);

        marker = new GMarker(point);
        map.addOverlay(marker);
    }
}


