function init()
{
   if (window.g_message != undefined && g_message != "")
   {
       window.alert(g_message);
   }
}

var map = '';
var firstMarker = '';

function pointKeyPress(e, inp)
{
	if ((e.keyCode && e.keyCode==13) || 
		(e.which && e.which==13))
	{
		createPoint(inp);
	}
	return true;
}

function onLoadGooglemap(widget)
{
   widget.gmap.addControl(new GLargeMapControl());
   widget.gmap.addControl(new GMapTypeControl());
   
   widget.gmap.setMapType(G_PHYSICAL_MAP);
   widget.gmap.addControl(new GLargeMapControl());
   widget.gmap.addMapType(G_PHYSICAL_MAP);
   widget.gmap.addControl(new GMapTypeControl());
   
   map = widget.gmap;
   firstMarker = widget.item.markers[0].latitude+","+widget.item.markers[0].longitude;
   reverseGeocoder(firstMarker);

   var ownMarker = false;
   for(var i in widget.item.markers)
   {
       if (widget.item.markers[i].linkedItem == g_category && widget.item.markers[i].linkedItemType == "item_cms_category")
       {
           ownMarker = widget.item.markers[i];
       }
   }

   GEvent.addListener(map, "infowindowopen", function()
   {
       var infoWindow = map.getInfoWindow();
       //var p = infoWindow.getPoint();
       var tmppoint = map.fromLatLngToContainerPixel(infoWindow.getPoint());
       tmppoint.y -= 150;
       map.panTo(map.fromContainerPixelToLatLng(tmppoint));
       //map.panTo(p);
   });

   if (ownMarker)
   {
       map.setCenter(ownMarker.gmarker.getPoint(), 13);

       var infoWindow = document.createElement("div");
       ownMarker.titleNode = document.createElement("span");
       ownMarker.titleNode.style.fontWeight = "bold"; 
       ownMarker.titleNode.appendChild(document.createTextNode(ownMarker.title));
       infoWindow.appendChild(ownMarker.titleNode);
       
       ownMarker.contentNode = document.createElement("div");
       ownMarker.contentNode.style.marginTop = "10px";
       ownMarker.contentNode.innerHTML = ownMarker.content;
       infoWindow.appendChild(ownMarker.contentNode);

       map.openInfoWindow(map.getCenter(), infoWindow);
   }
   
	var par = widget.divObject;
	var routeDiv = document.createElement("div");
	
	xajax.call("xajax_getHTML", {parameters:["route"], context: {
		callback: function(html)
		{
			var target = document.getElementById("centerContent");
			routeDiv.innerHTML = html;
			target.insertBefore(routeDiv, par.nextSibling);
		}
	}});
   
}

function reverseGeocoder(marker)
{
	if (marker)
	{
		var geocoder = new GClientGeocoder();
		geocoder.getLocations(marker, function(addresses) 
		{
			if (addresses.Status.code != 200)
			{
				alert('reverse geocoder failed to find an address for ' + marker.toUrlValue());
			}
			else
			{
				var address = addresses.Placemark[0];
				var address = address.address;
				document.getElementById('dstr').innerHTML = address;
			}
		});
	}
}


var marker = '';
var directions = 'init';

function createPoint(inp)
{
   map.removeOverlay(marker);
   
   var x = document.getElementById(inp).value;
   var y = document.getElementById('dstr').innerHTML;
   var str = x.replace(/ /g,"+");
   var dstr = y.replace(/ /g,"+");
   
   var geocoder = new GClientGeocoder();

   geocoder.getLatLng(str, function(point) {
       if (!point)
           { window.alert("Address could not be found"); }
       else
		{
		    var icon = new GIcon();
		    icon.image = "images/marker.png";
		    icon.iconSize = new GSize(47, 56);
		    icon.iconAnchor = new GPoint(10, 56);
		    icon.infoWindowAnchor = new GPoint(10, 56);

			marker = new GMarker(point,
			{
				title: x,
				icon: icon,
				clickable: false,
				draggable: false,
				hide: true
			});
			map.addOverlay(marker);

			directionsPanel = document.getElementById("routeDiv");
			if (directions == 'init')
				directions = new GDirections(map, directionsPanel);
							
  			directions.load("from: "+point.lat()+","+point.lng()+" to: "+ firstMarker,
  				{
					"locale": "en_EN"
				}
			);
			document.getElementById('printP').href = "http://maps.google.com/maps?f=d&hl=en&geocode=" + 
													"&saddr=" + str +
													"&daddr=" + dstr + "&ie=UTF8&z=13&pw=2";
			
			document.getElementById('printP').style.display = "block";
			document.getElementById("routeDiv").style.display = "block";
		}
	});
}

if (window.attachEvent) 
{
   window.attachEvent("onload", init);
}
else
{
   window.onload = init;
}
