﻿
var addGOverviewMapControl = true;
var addGMapTypeControl = true;
var map;
var latitude = '';
var longitude = '';
var resultList = new Object();


function LoadMap(mapId, latString, lngString) {
    var lat = parseFloat(latString.toString().replace(",", "."));
    var lng = parseFloat(lngString.toString().replace(",", "."));

    if (lat != 0 && lng != 0) {
        var latlng = new google.maps.LatLng(lat, lng);

        var mapOptions = {
            zoom: 13,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: addGMapTypeControl
        };

        map = new google.maps.Map(document.getElementById(mapId), mapOptions);

        AddMarker(map, latlng);
    }
    else {
        document.getElementById(mapId).style.display = 'none';
        document.getElementById('map_icons').style.display = 'none';
    }
}

function loadGoogleMap(latString, lngString) {
    LoadMap('map', latString, lngString);
}

function AddMarker(map, latlng) {
    var marker = new google.maps.Marker({
        position: latlng
    });

    marker.setMap(map);
}


function LoadStreetView(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);

    var panorama = new google.maps.StreetViewPanorama(document.getElementById('map'), { position: latlng });

    latitude = lat;
    longitude = lng;

    var sv = new google.maps.StreetViewService();
    sv.getPanoramaByLocation(latlng, 50, processSVData);
}

function processSVData(data, status) {
    if (status != google.maps.StreetViewStatus.OK)
        LoadMap('map', latitude, longitude);
}


function SetLocalSearch(latString, lngString) {
    latitude = latString;
    longitude = lngString;
}

function doLocalSearch(query, icon) {
    if (resultList[query] == null) {
        var localSearch = new GlocalSearch();

        localSearch.setCenterPoint(new google.maps.LatLng(latitude, longitude));
        localSearch.setAddressLookupMode(GlocalSearch.ADDRESS_LOOKUP_DISABLED);
        localSearch.setSearchCompleteCallback(this, show_results, new Array(localSearch, query, icon));
        localSearch.setResultSetSize(GSearch.LARGE_RESULTSET);

        localSearch.execute(query);
    } else {
        //if they are clicking for the 2nd time, remove the overlays for this query
        for (var i = 0; i < resultList[query].length; i++) {
            resultList[query][i].setMap(null);
        }

        resultList[query] = null;
    }
}

function show_results(searcher, query, icon) {
    resultList[query] = new Array();

    for (var i = 0; i < searcher.results.length; i++) {
        var marker = makeQueryMarker(
                        new google.maps.LatLng(searcher.results[i].lat, searcher.results[i].lng),
                        icon,
                        searcher.results[i].html.innerHTML);

        resultList[query][resultList[query].length] = marker;

        marker.setMap(map);
    }
}


var shadow = new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',
    new google.maps.Size(37, 34),
    null,
    new google.maps.Point(9, 34));

function makeQueryMarker(latlng, iconFile, wincontent) {
    var image = new google.maps.MarkerImage('/images/' + iconFile,
        null,
        null,
        new google.maps.Point(9, 34),
        new google.maps.Size(20, 34));

    var marker = new google.maps.Marker({
        position: latlng,
        shadow: shadow,
        icon: image
    });

    var infowindow = new google.maps.InfoWindow({
        content: wincontent
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });

    return marker;
}