﻿/// <reference path="jquery-1.3.2-vsdoc.js" />
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function() {
    $(document).ready(function() {
        $("tr.highlight").hover(
            function() {
                $(this).css("backgroundColor", "#eaeaea");
            },
            function() {
                $(this).css("backgroundColor", "#ffffff");
            }
        );

        $("img.map").click(function() {
            var img = $(this);
            window.open('/Map.aspx?Name=' + escape(img.parents("tr").find("a").html()) + '&Address=' + escape(img.attr("alt")), 'Map');
        });

        if ($("#map").length > 0)
            google.load("maps", "2", { "callback": displayMap });
    });
});

var _map;
var _geocoder;

function displayMap() {
    $(window).unload(function() { GUnload(); });
    var map = $("#map");
    map.fadeIn();
    if (!_map) {
        loadMap(map[0]);
        $(document).click(function() {
            map.stop(true, true);
        });
    }
    var name = unescape(getQueryStringItem('Name'));
    $("#name").html(name);
    showAddress(unescape(getQueryStringItem('Address')), name);
}

function getQueryStringItem(itemName, queryString) {
    var pattern = "[?&]{1}" + itemName + "=([^&]*)"
    var regex = new RegExp(pattern);
    if (!queryString)
        queryString = document.location.href;
    var match = regex.exec(queryString)

    if (match)
        return match[1];
    return;
}

/*
function setupMap() {
$(window).unload(function() { GUnload(); });
var map = $("#map");

map.bind("click", function(e) {
e.stopPropagation();
});

map.hover(
function() {
map.stop(true, true);
map.show();
}, function() {
map.fadeOut(3000);
}
);

$("img.map").hover(
function() {
map.stop(true, true);
map.fadeIn();
if (!_map) {
loadMap(map[0]);
$(document).click(function() {
map.stop(true, true);
});
}
var img = $(this);
var offset = img.offset();
var w = $(window);
var top = ((offset.top - w.scrollTop() + map.height() > w.height()) && offset.top - map.height() >= 0)
? offset.top - map.height()
: offset.top + img.height();
map.css({ left: offset.left - map.width(), top: top });
showAddress(img.attr("alt"), img.parents("tr").find("a").html());
},
function() {
map.fadeOut(3000);
}
).bind("click", function(e) {
e.stopPropagation();
});
}
*/
function loadMap(mapContainer) {
    if (GBrowserIsCompatible()) {
        var mapOptions = {
            googleBarOptions: {
                style: "new",
                adsOptions: {
                    client: "partner-pub-8841763953686185",
                    channel: "2216121518",
                    adsafe: "high",
                    language: "en"
                }
            }
        }

        _map = new GMap2(mapContainer, mapOptions);
        var uiOptions = _map.getDefaultUI();
        uiOptions.controls.maptypecontrol = false;
        _map.setUI(uiOptions);
        _map.enableGoogleBar();

        var publisherID = 'ca-pub-8841763953686185';
        var adsManagerOptions = {
            maxAdsOnMap: 2,
            style: 'adunit',
            channel: '6837256063'
        };

        adsManager = new GAdsManager(_map, publisherID, adsManagerOptions);
        adsManager.enable();
    }
    return null;
}

function showAddress(address, name) {
    if (!_map)
        return;

    _map.clearOverlays();

    if (!_geocoder)
        _geocoder = new GClientGeocoder();

    if (_geocoder) {
        _geocoder.getLatLng(
		    address + " nz",
            function(point) {
                if (point) {
                    _map.setCenter(point, 13);

                    var marker = new GMarker(point);
                    _map.addOverlay(marker);
                    if (name) {
                        GEvent.addListener(marker, "click", function() {
                            marker.openInfoWindowHtml(name);
                        });
                        marker.openInfoWindowHtml(name);
                    }
                }
            }
        );
    }
}