
var marker;
var lsc;
var map;

function map_home(src) {
    lsc.goIdle();
    map.setCenter(marker.getPoint(), zoom);
    google.maps.Event.trigger(marker, 'click')
    if (!src) src = $("map_home");
    setActive(src);
    return false;  
}

function map_search(src, str) {
    map.setCenter(marker.getPoint(), zoom);
    lsc.execute(str);
    setActive(src);
    return false;
}

function setActive(src) {
    $('sub_nav').getElements('li').each(function(item) {
        if (item.id == src.parentNode.id)
            item.className = "active";
        else
            item.className = "";
    });
}

function load() {
    if (GBrowserIsCompatible()) {
        var geocoder = new google.maps.ClientGeocoder();
        geocoder.getLatLng(Community.address, init_map);
    }
}

function init_map(point) {
    // Create and Center a Map
    map = new GMap2(document.getElementById("google_map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());

    marker = new google.maps.Marker
            (point,
                { icon: new google.maps.Icon(G_DEFAULT_ICON, '/images/google_map/dark_green_pin.png') }
            );

    map.setCenter(point, zoom);
    map.addOverlay(marker);
    google.maps.Event.addListener(marker, "click", function() {
        var html =
	                '<div class="location_popup">' +
	                '<h3 class="location_name">' + Community.name + '</h3>' +
	                '<p class="location_markup">' + Community.markup + '</p>' +
	                '<div class="get_directions">' +
		                '<p class="label">Get driving directions:</p>' +
		                '<form class="form" action="#" method="get" onsubmit="return GetDirections();">' +
			                '<input type="text" class="text_field" id="start_location" />' +
			                '<a href="#" onclick="return GetDirections();"></a>' +
		                '</div>' +
	                '</div>';
        marker.openInfoWindowHtml(html);
    });


    //http://www.google.com/uds/solutions/localsearch/reference.html#_additionalcallbacks-->

    var options = { resultList: google.maps.LocalSearch.RESULT_LIST_INLINE,
        suppressInitialResultSelection: true,
        onGenerateMarkerHtmlCallback: extendMarker
    };

    //var searchControl = new google.search.SearchControl();
    lsc = new google.maps.LocalSearch(options);
    map.addControl(lsc);

    //lsc.setCenterPoint(marker.getPoint());

    google.maps.Event.trigger(marker, "click");
    document.body.onunload = "GUnload()";

}

function extendMarker(marker, html, result) {
    // extend the passed in html for this result
    //div = document.createElement("div");
    //div.innerHTML = "Bookmark This Result...";
    //html.appendChild(div);
    return html;
}

function markersSet(markers) {
    if (markers.length > 1) {
        markers[0].closeInfoWindow();
    }
}

function GetDirections() {
    var start = $("start_location");
    if (!start || !start.value) { return; }
    window.open(
		"http://maps.google.com/maps?hl=en" +
		"&daddr=" + escape(Community.address) +
		"&saddr=" + escape(start.value),
		"_blank");
    return false;
}

GSearch.setOnLoadCallback(load);
