﻿var photoSlider;

// To be assigned on page.
var lat;
var lng;
var address;
var country = 'Australia';

var zoom = 14;
var map;
var point;
var geocoder;
var marker;
var picon = defineMarkerIcon();

/*function $(id)
{
  return document.getElementById(id);
}*/

window.onunload = GUnload;
window.onload = function()
{
    setupMap(document.getElementById('latitude').innerHTML, document.getElementById('longitude').innerHTML);
    showLocation(
        document.getElementById('address').innerHTML, 
        '<p id=\"mapText\">' + document.getElementById('address').innerHTML + '<br />Australia</p>', 
        document.getElementById('latitude').innerHTML, 
        document.getElementById('longitude').innerHTML);
        
    // vertical slider control
    if($('scrollHandle') != null)
    {
        photoSlider = new Control.Slider('scrollHandle', 'scrollBar', 
            {
	            axis: 'vertical',
	            onSlide: function(v) 
	                { 
	                    scrollVertical(v, $('photoThumbnailsScroll'), photoSlider);  
	                },
	            onChange: function(v) 
	                { 
	                    scrollVertical(v, $('photoThumbnailsScroll'), photoSlider); 
	                }
            });
    }
};

function defineMarkerIcon()
{
    pIcon = new GIcon();
    pIcon.image = 'images/icons/gmapMarker.png';
    pIcon.iconSize = new GSize(30, 30);
    pIcon.iconAnchor = new GPoint(15, 15);
    pIcon.infoWindowAnchor = new GPoint(20, 10);
    
    return pIcon;
}

function setupMap(latitude, longitude) 
{
    // Ensure types.
    var lat = parseFloat(latitude) || '';
    var lng = parseFloat(longitude) || '';
    
    lat = isNaN(lat) ? '' : lat;
    lng = isNaN(lng) ? '' : lng;

	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById('propertyMap'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl(new GSize(80, 80)));

        if ((lat != '') && (lng != '')) 
        {
		    point = new GLatLng(lat, lng);
		    map.setCenter(point, zoom);
		}
		else
		{
		    point = new GLatLng(0.00, 0.00);
		    map.setCenter(point, zoom);
		}
	}
}

function showLocation(address, html, lat, lng) 
{
	map.clearOverlays();
	if ((lat == '') || (lng == '')) 
	{
		geocoder = new GClientGeocoder();
		geocoder.getLocations(address, function(response) 
		    {
			    if (!response || response.Status.code != 200) 
			    {
				    document.getElementById('restMap').style.display = 'none';
			    } 
			    else 
			    {
				    place = response.Placemark[0];
				    createMarker(place.Point.coordinates[1], place.Point.coordinates[0], html);
			    }
		    });
	} 
	else 
	{
	    createMarker(lat, lng, html)
	}
}

function createMarker(latitude, longitude, html)
{
    point = new GLatLng(parseFloat(latitude), parseFloat(longitude));
    marker = initMarker(point, html);
    map.addOverlay(marker);
    map.setCenter(point, zoom);
}

function initMarker(point, html) 
{
    marker = new GMarker(point, pIcon);
    GEvent.addListener(marker, 'click', function() 
        {
	        marker.openInfoWindowHtml(html);
        });
    return marker;
}
