/**
 *
 * @author Alex Buchgeher <alex(dot.)buchgeher(at.)gmail(dot.)com>
 * created 2007-12-03
 *
 */


var Map = Class.create();
Map.prototype = {
	initialize: function(map, address) {
		if(GBrowserIsCompatible()) {
			this.map = new GMap2($(map));
			Event.observe(window, "unload", GUnload);
			this.map.addControl(new GLargeMapControl());
			this.map.addControl(new GOverviewMapControl());
			this.address = address;
			var gc = new GClientGeocoder();
			gc.getLatLng(address, this.processPoint.bind(this));
		}
	},
	
	processPoint: function(point) {
		if(point != null) {
			var m = new GMarker(point);
			var zoom = 12;
			this.map.setCenter(new GLatLng(point.y, point.x), zoom);
			
			
			// ------------------------
			// build content for info-bubble
			// ------------------------

				// build content for info-bubble
			var addressInfo = document.createElement("div");
			addressInfo.style.fontFamily = "sans-serif";
			addressInfo.style.fontSize = "12px";
			addressInfo.style.color = "#333";
			addressInfo.innerHTML = "<strong>Equiterra - Land der Pferde</strong><br>";
			addressInfo.innerHTML += "Oberreichenbach 7-8<br>4209 Engerwitzdorf<br>Austria";
			addressInfo.innerHTML += '<img class="infobubbleImage" src="fileadmin/templates/images/equiterra_infobubble.jpg" />';
			

			// ------------------------
			// build route planner form
			// ------------------------

				// form wrapper
			var formWrapper = document.createElement("div");
			formWrapper.style.display = "none";
			formWrapper.style.fontSize = "11px";
			formWrapper.style.position = "absolute";
			formWrapper.style.top = "0px";
			formWrapper.style.left = "0px";
			formWrapper.style.background = "#fff";
			formWrapper.style.border = "3px solid #efefef";
			formWrapper.style.padding = "15px 25px 5px 25px";
			formWrapper.innerHTML = "<strong>Route planen</strong>";
			
				// headline
			var routeHeadline = document.createElement("strong");
			routeHeadline.appendChild(document.createTextNode("Route planen"));
			routeHeadline.appendChild(document.createElement("br"));
			routeHeadline.appendChild(document.createElement("br"));
			routeHeadline.style.fontSize = "11px";
			
				// label
			var label = document.createElement("label");
			label.appendChild(document.createTextNode("Ihre Adresse "));
			var help = document.createElement("span");
			help.innerHTML = '<small style="font-size:9px">(zB.: Hauptstrasse, 4040 Linz)</small><br/>';
			
				// 1st address
			var input_saddr = document.createElement("input");
			input_saddr.type = "text";
			input_saddr.name = "saddr";
			input_saddr.value = "";

				// dest address
			var input_daddr = document.createElement("input");
			input_daddr.type = "hidden";
			input_daddr.name = "daddr";
			input_daddr.value = this.address;
			
				// submit button
			var inputSubmit = document.createElement("input");
			inputSubmit.type = "submit";
			inputSubmit.value = "Route planen";
			inputSubmit.className = "inputSubmit";

				// cancel button
			var inputCancel = document.createElement("input");
			inputCancel.type = "button";
			inputCancel.value = "Abbrechen";
			inputCancel.className = "inputSubmit";
			Event.observe(inputCancel, "click", function(e) { formWrapper.style.display = "none"; });
			
				// merge form elements together
			var div = document.createElement("div");
			div.appendChild(routeHeadline);
			div.appendChild(label);
			div.appendChild(help);
			div.appendChild(input_saddr);
			div.appendChild(input_daddr);
			div.appendChild(document.createElement("br"));
			div.appendChild(inputSubmit);
			div.appendChild(inputCancel);
			var form = document.createElement("form");
			form.target = "_blank";
			form.action = "http://maps.google.de/maps";
			form.method = "get";
			form.appendChild(div);
			formWrapper.appendChild(form);
			
			
			// ------------------------
			// build marker (add addressinfo and form)
			// ------------------------

			var infoTabs = new Array(
				new GInfoWindowTab("Adresse", addressInfo),
				new GInfoWindowTab("Route", form)
			);

			GEvent.addListener(m, "click", function() {
			  m.openInfoWindowTabsHtml(infoTabs);
			});

			this.map.addOverlay(m);

				// open infobubble
			m.openInfoWindowTabsHtml(infoTabs);
		}
	}
}
