﻿//<![CDATA[
var mapAddresses;
var mapTitles;
var mapButtons;
var address;
var address2;
var titles;
var mapDiv;
var routeDiv;

function centerDiv() {
   //get viewport's width and height
   vpWidth = Element.getWidth(document.body);
   vpHeight = Element.getHeight(document.body);

   //get dialog's width and height
   dialogWidth = mapDiv.offsetWidth;  
   dialogHeight = mapDiv.offsetHeight;
   
   //calculate position
   dialogTop = (vpHeight/2) - (dialogHeight/2);
   dialogLeft = (vpWidth/2) - (dialogWidth/2);

   //Position the Dialog
   mapDiv.style.top = dialogTop+"px";
   mapDiv.style.left = dialogLeft+"px";
}

function initMap() {
	mapDiv = $('mapDiv');

	mapButtons = document.getElementsByClassName('mapButton');
	mapAddresses = document.getElementsByClassName('mapAddress');
	mapTitles = document.getElementsByClassName('mapTitle');
	
	for(i=0; i<mapButtons.length; i++) {
		mapButtons[i].index = i;
		
		mapButtons[i].onmousedown = function(e) {
			address = mapAddresses[this.index].innerHTML;
			address2 = address;
			var regExp = /<.*?>/gi;
			var regExp2 = /\s+/gi;
			var regExp3 = /\(.*?\)/gi;
			address = address.replace(regExp," ");
			address3 = address.replace(regExp2," ");
			
			title2 = mapTitles[this.index].innerHTML;
			title = title2.replace(regExp," ");
			title3 = title.replace(regExp3,"");
			
			mapDiv.innerHTML = '<div class="mapHeader"><a href="javascript:closeMap();" class="closeMap">X</a>'+title3+'</div>';
			mapDiv.innerHTML += '<div id="map"></div>';
			mapDiv.innerHTML += '<div class="mapFooter"></div>';
			mapDiv.style.display = 'block';
			gload();
			centerDiv();
		};
	}
}

function fromButtonClick() {
	var fromAddress = $('fromAddress').value;
	window.open("http://maps.google.com/maps?f=d&hl=en&saddr="+fromAddress+"=&daddr="+address3+"&ie=UTF8&om=1&iwloc=addr","Directions")
	
//	routeDiv = $('routeDiv');
//	var fromAddress = $('fromAddress').value;
//	
//	routeDiv.innerHTML = '<div class="mapHeader">Directions</div>';
//	routeDiv.innerHTML += '<div id="route"></div>';
//	routeDiv.innerHTML += '<div class="mapFooter"></div>';
//	routeDiv.style.display = 'block';
//	
//	loadDirections(fromAddress);
}

function closeMap() {
	mapDiv.style.display = 'none';
	routeDiv.style.display = 'none';
}

var map = null;
var geocoder = new GClientGeocoder();

function gload() {
	if (GBrowserIsCompatible()) {
		map = new GMap2($("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		geocoder.getLatLng(
			address3,
			function(point) {
				if (!point) {
					alert(address3 + " not found");
				}
				else {
					var marker = new GMarker(point);
					map.setCenter(point, 13);
					map.addOverlay(marker);
					marker.openInfoWindowHtml("<p style=\"width: 100%;margin: 0px;padding: 0px;\"><b>"+title2+"</b><br />"+address2+"</p><p style=\"width: 100%;margin: 0px;padding: 0px;margin-top: 10px;\">Get directions from:</p><p style=\"width: 100%;margin: 0px;padding: 0px;\"><input type=\"text\" id=\"fromAddress\" tabindex=\"0\" onkeypress=\"if(event.keyCode == 13)fromButtonClick();\" /><input type=\"button\" id=\"fromButton\" value=\"Go\" onclick=\"fromButtonClick()\" tabindex=\"1\" /></p>");
				}
			}
		);
	}
};

var directionsPanel;
var directions;

function loadDirections(getAddress) {
	map = new GMap2($("map"));
	directionsPanel = $("route");
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());

	geocoder.getLatLng(
		getAddress,
		function(point) {
			if (!point) {
				alert(getAddress + " not found");
			}
		}
	);
	
	geocoder.getLatLng(
		address3,
		function(point) {
			if (!point) {
				alert(address3 + " not found");
			}
			else {
				map.setCenter(point, 13);
			}
		}
	);
	
	directions = new GDirections(map, directionsPanel);
	alert(getAddress+" to "+address3);
	directions.load(getAddress+" to "+address3);
}

Event.observe(window, 'load', initMap);
Event.observe(window, 'unload', GUnload);
//]]>