if (GBrowserIsCompatible()) {
	var map = new GMap2(document.getElementById("map"));				
	
	var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,30));
	var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20));
	map.addControl(new GMapTypeControl(), bottomRight);
	map.addControl(new GLargeMapControl(), topRight);
	
	myPoint = new GLatLng(47.47705743919014, 12.345285415649414);
	
	map.setCenter(myPoint, 11, G_HYBRID_MAP);
	
	icons = new Array('bar','event','golf','hotel4','hotel5','parking','playground','restaurant','skirent','sledge','swimming','tennis');
	
	var icon = new Array();
	
	for(t=0;t<icons.length;t++)
	{
		v = icons[t];
		
		icon[v] = new GIcon();
		icon[v].iconSize = new GSize(17, 17);
		icon[v].iconAnchor = new GPoint(8, 8);
		icon[v].image = "/static/img/map/icon_" + v + ".png";	
		icon[v].infoWindowAnchor = new GPoint(17, 0);
	}
	
	var startPoint = new Array();
	var endPoint = new Array();
	var startPointType = null;
	var endPointType = null;
	var startPointText = null;
	var endPointText = null;
	
	var azMarkers = new Array();
	var lastAzKey = "";
	var eventMarkers = new Array();
	var accoMarkers = new Array();
	var lastAccoKey = "";
	var lastAccoIcon = "";
	var lastAzIcon = "";
			
	var i18n = new Array();
	i18n['de'] = new Array();
	i18n['en'] = new Array();
	
	i18n['de']['start'] = "als Start";
	i18n['de']['ziel'] = "als Ziel";
	i18n['de']['routenplaner'] = "Routenplaner";
	i18n['de']['error1'] = "Bitte wählen Sie erst einen Start und Endpunkt aus!";
	i18n['de']['error2'] = "Einer der angegebenen Orte konnte nicht gefunden werden, bitte vergewissern Sie sich das die Adresse richtig geschrieben ist.";
	i18n['de']['error3'] = "Bitte geben Sie eine gültige Adresse ein";
	i18n['de']['error4'] = "Es trat ein unbekannter Fehler bei der internen Kommunikation auf, sollte dieser Fehler wiederholt auftreten wenden Sie sich bitte an info@kitzbuehel.com.";
	
	i18n['en']['start'] = "as start";
	i18n['en']['ziel'] = "as destination";
	i18n['en']['routenplaner'] = "routeplanner";
	i18n['en']['error1'] = "Please select one start and destination point.";
	i18n['en']['error2'] = "One of the entered addresses cannot be found, please be sure that the address is valid.";
	i18n['en']['error3'] = "Please enter a valid address.";
	i18n['en']['error4'] = "An unknown error occured. If the error appears several times, pleate contact info@kitzbuehel.com.";
	
	gdir = new GDirections(map, document.getElementById("dasisteintest"));
	GEvent.addListener(gdir, "load", onGDirectionsLoad);
	GEvent.addListener(gdir, "error", handleErrors);
}


function setDirections() 
{
 	if(startPointType != null && endPointType != null)
	{
		if(startPointType == "text")
		{
			from = startPointText;
		}
		else
		{
			from = startPoint['lat'] + "," + startPoint['lng'];
		}
		
		if(endPointType == "text")
		{
			to = endPointText;
		}
		else
		{
			to = endPoint['lat'] + "," + endPoint['lng'];
		}
		
		gdir.load("from: " + from + " to: " + to ,{ "locale": lang });
	}
	else
	{
		alert(i18n[lang]['error1']);
	}
 	
}

function handleErrors(){
   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	 alert(i18n[lang]['error2']);
   
   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	 alert(i18n[lang]['error3']);
	 
   else	alert(i18n[lang]['error4']);
   
}

function onGDirectionsLoad()
{ 
	$('categoriesBox').style.display = 'none';
	$('showCategoriesContents').style.display = 'block';
	$('dasisteintest').style.display = 'block';
}


function showInputBlock (prefix)
{
	$(prefix + 'InputBlock').style.display = 'block';
	$(prefix + 'AdressBlock').style.display = 'none';
}


function setAsStartPoint (lat,lng,text)
{
	startPointType = 'coordinates';
	
	startPoint['lat'] = lat;
	startPoint['lng'] = lng;
	$('startAdressText').innerHTML = text;
	$('startInputBlock').style.display = 'none';
	$('startAdressBlock').style.display = 'block';
}

function setAsEndPoint (lat,lng,text)
{
	endPointType = 'coordinates';
	
	endPoint['lat'] = lat;
	endPoint['lng'] = lng;
	$('endAdressText').innerHTML = text;
	$('endInputBlock').style.display = 'none';
	$('endAdressBlock').style.display = 'block';
}

function setStartPointInput ()
{
	startPointType = 'text';
	startPointText = $('startStreet').value + "," + $('startZip').value + ',' + $('startCity').value + ',' + $('startCountry').value;
	$('startAdressText').innerHTML = $('startStreet').value + "<br />" + $('startZip').value + ' ' + $('startCity').value + '<br />' + $('startCountry').value;
	$('startInputBlock').style.display = 'none';
	$('startAdressBlock').style.display = 'block';
}

function setEndPointInput ()
{
	endPointType = 'text';
	endPointText = $('endStreet').value + "," + $('endZip').value + ',' + $('endCity').value + ',' + $('endCountry').value;
	$('endAdressText').innerHTML = $('endStreet').value + "<br />" + $('endZip').value + ' ' + $('endCity').value + '<br />' + $('endCountry').value;
	$('endInputBlock').style.display = 'none';
	$('endAdressBlock').style.display = 'block';
}


function showCategoriesContents ()
{
	$('categoriesBox').style.display = 'block';
	$('showCategoriesContents').style.display = 'none';
}

function toogleAz(category,checked,azicon)
{
	if(checked == true)
	{
		enableDisableCheckboxes();
		
		lastAzKey = category;
		lastAzIcon = azicon;
		new Ajax.Request('/extensions/geoExport/json/a-z.php',{ method: 'get', parameters: 'lang=' + lang + '&category=' + category, onComplete: drawAz });
	}
	else
	{
		for(i=0;i<azMarkers[azicon].length;i++)
		{
			if(azMarkers[azicon][i])
			{
				map.removeOverlay(azMarkers[azicon][i]);
			}
		}
	}
}

function drawAz (transport)
{
	enableDisableCheckboxes();
	
	az = transport.responseText.evalJSON();
		
	azMarkers[lastAzIcon] = new Array();
	for (i=0;i<az.length; i++)
	{
		azMarkers[lastAzIcon][i] = new GMarker(new GLatLng(az[i].lat,az[i].lng),{icon: icon[lastAzIcon]});
		
		if(parseInt(az[i].zip) < 1)
		{
			zip = "";
		}
		else
		{
			zip = az[i].zip;
		}
		
		azMarkers[lastAzIcon][i].myHTML = ('<div class="infoWindowContent"><b>' + az[i].name + '</b><br />' +  az[i].street + '<br />' + zip + ' ' + az[i].city +
		'<br /><br />' +
		'<div style="width:200px;">' + az[i]['description_' + lang] + '</div>' +
		'<br /><br />' +
		'<div class="routeBox"><span class="label">' + i18n[lang]['routenplaner'] + '</span>' + 
		'<span class="start" onclick="setAsStartPoint(' + az[i].lat + ',' + az[i].lng + ',\'<b>' + az[i].name + '</b><br />' + az[i].street + '<br />' + az[i].zip + ' ' + az[i].city + '\');">' + i18n[lang]['start'] + '</span>' +
		'' +
		'<span class="end" onclick="setAsEndPoint(' + az[i].lat + ',' + az[i].lng + ',\'<b>' + az[i].name + '</b><br />' + az[i].street + '<br />' + az[i].zip + ' ' + az[i].city + '\');">' + i18n[lang]['ziel'] + '</span></div></div>');
		
		if(az[i].name.length > 2 || az[i]['description_' + lang].length > 2)
		{
			GEvent.addListener(azMarkers[lastAzIcon][i], "click", function() { this.openInfoWindow(this.myHTML); });
		}
		
		map.addOverlay(azMarkers[lastAzIcon][i]);
	}
	
}

function toogleEvents(checked)
{
	if(checked == true)
	{
		enableDisableCheckboxes();
		new Ajax.Request('/extensions/geoExport/json/events.php',{ method: 'get', parameters: 'lang=' + lang, onComplete: drawEvents });
	}
	else
	{
		for(i=0;i<eventMarkers.length;i++)
		{
			if(eventMarkers[i])
			{
				map.removeOverlay(eventMarkers[i]);
			}
		}
	}
}

function drawEvents (transport)
{
	events = transport.responseText.evalJSON();
		
	for (var i=0;i<events.length; i++)
	{
		eventMarkers[i] = new GMarker(new GLatLng(events[i].lat,events[i].lng),{icon: icon['event']});
		eventMarkers[i].myHTML = ('<div class="infoWindowContent"><b>' + events[i].name + '</b>' + 
		'<br /><br /><div class="routeBox"><span class="label">' + i18n[lang]['routenplaner'] + '</span>' + 
		'<span class="start" onclick="setAsStartPoint(' + events[i].lat + ',' + events[i].lng + ',\''+ events[i].name + '\');">' + i18n[lang]['start'] + '</span>' +
		'' +
		'<span class="end" onclick="setAsEndPoint(' + events[i].lat + ',' + events[i].lng + ',\'' + events[i].name + '\');">' + i18n[lang]['ziel'] + '</span></div></div>');
		
		GEvent.addListener(eventMarkers[i], "click", function() { this.openInfoWindow(this.myHTML); });

		map.addOverlay(eventMarkers[i]);
	}
	enableDisableCheckboxes();
}
			
function toogleAccommodation (checked, category, hotelicon)
{
	if(checked == true)
	{
		cats = category.split(",");
		categoryQuery = "";
		
		for(s=0;s<cats.length;s++)
		{
			categoryQuery += "&category=" + cats[s];
		}
		
		enableDisableCheckboxes();
		
		variables = "url=" + escape('http://urlaubsplaner.kitzbuehel.com/unterkuenfte/?searchstate=1' + categoryQuery + '&theme=&region=&name=&rprice.to=&perpage=200&extmode=1&out=xml');
		new Ajax.Request('/extensions/dta/proxy.php',{ method: 'post', parameters: variables, onComplete:drawAccommodation });
		lastAccoKey = category;
		lastAccoIcon = hotelicon;
	}
	else
	{
		for(i=0;i<accoMarkers[hotelicon].length;i++)
		{
			if(accoMarkers[hotelicon][i])
			{
				map.removeOverlay(accoMarkers[hotelicon][i]);
			}
		}
	}
	
	
}

function drawAccommodation (transport)
{
	accos = transport.responseText.evalJSON();	
	accos = accos.accommodations.accommodation;
		
	accoMarkers[lastAccoIcon] = new Array();
	
	for (var ix=0;ix<accos.length; ix++)
	{
		if(accos[ix].geoposition)
		{
			accoMarkers[lastAccoIcon][ix] = new GMarker(new GLatLng(accos[ix].geoposition.latitude,accos[ix].geoposition.longitude),{icon: icon[lastAccoIcon]});
			
			accoMarkers[lastAccoIcon][ix].myHTML = ('<div class="infoWindowContent"><b>' + accos[ix].name + '</b><br />' + accos[ix]['address-contact'].street + '<br />' + accos[ix]['address-contact'].zip + ' ' + accos[ix]['address-contact'].city +
			'<br /><br /><div class="routeBox"><span class="label">' + i18n[lang]['routenplaner'] + '</span>' + 
			'<span class="start" onclick="setAsStartPoint(' + accos[ix].geoposition.latitude + ',' + accos[ix].geoposition.longitude + ',\'<b>'+ accos[ix].name + '</b><br />' + accos[ix]['address-contact'].street + '<br />' + accos[ix]['address-contact'].zip + ' ' + accos[ix]['address-contact'].city + '\');">' + i18n[lang]['start'] +  '</span>' +
			'' +
			'<span class="end" onclick="setAsEndPoint(' + accos[ix].geoposition.latitude + ',' + accos[ix].geoposition.longitude + ',\'<b>' + accos[ix].name + '</b><br />' + accos[ix]['address-contact'].street + '<br />' + accos[ix]['address-contact'].zip + ' ' + accos[ix]['address-contact'].city +  '\');">' + i18n[lang]['ziel'] + '</span></div></div>');
			
			
			GEvent.addListener(accoMarkers[lastAccoIcon][ix], "click", function() { this.openInfoWindow(this.myHTML); });
	
			map.addOverlay(accoMarkers[lastAccoIcon][ix]);
		}
	}
	
	enableDisableCheckboxes();
}


function enableDisableCheckboxes ()
{
	checks = $('categoriesBox').getElementsByTagName("input");
	
	for (e=0;e<checks.length;e++)
	{
		if(checks[e].disabled == true)
		{
			checks[e].disabled = false;
		}
		else
		{
			checks[e].disabled = true;
		}
	}
}
