﻿var poiShapeLayer			= null;
var accomodationShapeLayer	= null;
var routeShapeLayer			= null;
var updateTimerID			= null;
var routeListTimerID		= null;
var accomodationTimerID		= null;

var routeMinKm				= 1;
var routeMaxKm				= 280;
var minPrice				= 10;
var maxPrice				= 299;
var accomodationSearchType	= -1;
var adults					= 1;
var ix						= 0;
var iy						= 0;

var activeTourID			= "";

var btnSwitchTileLayer;

//-------------------------------------------------------------------------------------
function GetMap()
{ 
	map = new VEMap('divMap');
	map.LoadMap(new VELatLong(52.4,9.7), 9 ,'r' ,false);
	map.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);
	
	map.AttachEvent("onmousedown", Map_OnMouseDown);
	map.AttachEvent("onchangeview", Map_OnChangeView);
	map.AttachEvent("onchangemapstyle", ChangeMapStyleHandler);
	
	poiShapeLayer = new VEShapeLayer();
	map.AddShapeLayer(poiShapeLayer);
	
	accomodationShapeLayer = new VEShapeLayer();
	map.AddShapeLayer(accomodationShapeLayer);
	
	routeShapeLayer = new VEShapeLayer();
	map.AddShapeLayer(routeShapeLayer);
	
//	// Button für OpenStreetmap-Layer
//	if (btnSwitchTileLayer == null)
//	{
//		btnSwitchTileLayer = document.createElement("a");
//		btnSwitchTileLayer.id = "btnSwitchTileLayer";
//		btnSwitchTileLayer.style.top ="3px";                
//		btnSwitchTileLayer.style.left = "400px";
//		btnSwitchTileLayer.style.background = "#00579E";
//		btnSwitchTileLayer.style.color="White";
//		btnSwitchTileLayer.style.font="9px Arial";
//		btnSwitchTileLayer.text.decoration = "none";
//		btnSwitchTileLayer.innerHTML = "OpenStreetMap <br />einschalten";
//		btnSwitchTileLayer.href = "#";
//		btnSwitchTileLayer.onclick = SwitchTileLayer;
//		map.AddControl(btnSwitchTileLayer);
//	}
	
	if (typeof(pageLanguage)!="undefined")
		if (pageLanguage=="de")
		{
			$("#MSVE_navAction_RoadMapStyle").html("Straße");
			$("#MSVE_navAction_AerialMapStyle").html("Luftbild");
			$("#MSVE_navAction_ObliqueMapView").html("Vogelpersp.");
			$("#MSVE_navAction_showLabels").html("Beschriftg.");
		}
		
	InitializeRouteDistanceSlider();
	InitializeAccomodationPriceRangeSlider();
	InitializeAccomodationPersonRangeSlider();

	var d = new Date();
	$("#txtStartDate").val(d.getDate()+"." + (d.getMonth()+1) + "." + d.getFullYear());
	d=AddDays(d,1);
	$("#txtEndDate").val(d.getDate()+"." + (d.getMonth()+1) + "." + d.getFullYear());
	
	$('#txtStartDate').datepicker({ dateFormat: 'dd.mm.yy', showOn: 'both', buttonImage: 'templates/images/calendar.gif', buttonImageOnly: true, onClose: function(date) { StartDateSelected(date); } });
	$('#txtEndDate').datepicker({ dateFormat: 'dd.mm.yy', showOn: 'both', buttonImage: 'templates/images/calendar.gif', buttonImageOnly: true, onClose: function(date) { EndDateSelected(date); } });

	UpdateData();
}

//-------------------------------------------------------------------------------------
function Map_OnChangeView(e)
{
	// if there is already a timer running, delete it
	if (updateTimerID!=null)
		window.clearTimeout(updateTimerID);
		
	// create a new timer, that fires in 0.5 seconds and calls the updatedata function
	updateTimerID = window.setTimeout("UpdateData()",500);
}

//-------------------------------------------------------------------------------------
function UpdateData()
{
	poiShapeLayer.DeleteAllShapes();
	accomodationShapeLayer.DeleteAllShapes();
	GetPois();
	GetAccomodations();
	GetRouteList();
	GetAvailableAccomodationTypes();
}

//-------------------------------------------------------------------------------------
function GetPois()
{
	var v=map.GetMapView();
	var categories = GetSelectedPoiCategories();

	if (categories == "")
	{
		poiShapeLayer.DeleteAllShapes();
		return;
	}
	
	var params="TopLeftLatitude=" + v.TopLeftLatLong.Latitude + 
						 "&TopLeftLongitude=" + v.TopLeftLatLong.Longitude +
						 "&BottomRightLatitude=" + v.BottomRightLatLong.Latitude +
						 "&BottomRightLongitude=" + v.BottomRightLatLong.Longitude +
						 "&ZoomFactor=" + map.GetZoomLevel() +
						 "&Categories=" + categories;
	
				 
	$.post("templates/Pois.ashx",params,ReceivePois);
}


//-------------------------------------------------------------------------------------
function ReceivePois(arg)
{
	poiRows=arg.split('\n');
	poiIndex=0;
	poiDisplayIndex = 0;
	//poiShapeLayer.DeleteAllShapes();
	if (poiRows.length>1)	window.setTimeout("DelayedAddPois()",1); else AfterReceivePois();
}
//-------------------------------------------------------------------------------------
function DelayedAddPois()
{
	for(var ii=poiIndex;ii<poiIndex+100;ii++)
	{ 
		if ( ii>=poiRows.length-1) break;
		columns=poiRows[ii].split('^');
		if (columns[0] == "C")
		{
			AddAJAXPin(poiShapeLayer, "C", "POI", columns[3], new VELatLong(parseFloat(columns[1]), parseFloat(columns[2])), "templates/images/icon-theme-v02.gif" , columns[4],"templates/images/mapiconsnew/164.gif");
		}
		else
		{
			AddAJAXPin(poiShapeLayer,"S", "POI", columns[3], new VELatLong(parseFloat(columns[1]), parseFloat(columns[2])), "templates/images/mapiconsnew/" + columns[5] + ".gif", columns[4],"templates/images/mapiconsnew/164.gif");
		}
	}

	poiIndex=ii+1;
	if (ii<poiRows.length-1) window.setTimeout("DelayedAddPois()",20);else AfterReceivePois();
}
//-------------------------------------------------------------------------------------
function AfterReceivePois()
{
	bBlockUpdatePois = false;
	//HideLoadingPanel();
}

//-------------------------------------------------------------------------------------
function GetSelectedAccomodationTypes()
{
	return $("#" + cboAccomodationTypeClientID).val();
}


//-------------------------------------------------------------------------------------
function AddAJAXPin(layer, clusterType, dataType, pinID, latlon, iconUrl, pincount,baseIconUrl)
{

	var pin = new VEShape(VEShapeType.Pushpin,latlon);
	pin.SetTitle("");
	pin.SetDescription("");
	
	//ci.CustomHTML = "<div class='Pushpin' style='background-image:url('' >" + 
	//				"<img src='templates/images/mapicons/164.gif'/><br/>" + (pincount != 1 ? pincount : "") + "</div>";

	var s = "";

//					(iconUrl!="-1" ? "<img src='templates/images/mapicons/" + iconUrl + ".gif'/>" : "") +	
	if (clusterType=="S")
		s+="<div class='Pushpin' style='background-image:url(" + iconUrl + ")'></div>";
	else
		s+="<div class='Pushpin' style='background-image:url(" + iconUrl +")'>" + (pincount != 1 ? pincount : "") + "</div>";


	pin.SetCustomIcon(s);

	layer.AddShape(pin);

	pin.myID				= pinID;
	pin.ClusterType = clusterType;
	pin.DataType		= dataType;
}

//-------------------------------------------------------------------------------------
function Map_OnMouseDown(e)
{
	//HideInfoboxPanel();
	var x,y;

	if (map.GetMapMode() == VEMapMode.Mode3D)
	{
	return;
//		var latlong = e.latLong;
//		rlat = latlong.Latitude;
//		rlon = latlong.Longitude;
//		var px = map.LatLongToPixel(latlong, map.GetZoomLevel());
//		x = px.x;
//		y = px.y;
	}
	else
	{
		try
		{
			var latlong = map.PixelToLatLong(new VEPixel(e.mapX, e.mapY));
			rlat = latlong.Latitude;
			rlon = latlong.Longitude;
			x = e.mapX;
			y = e.mapY;
		} catch (ex) { }
	}

	
	if (e.elementID != null)
	{
		popupShape = map.GetShapeByID(e.elementID);
		if (popupShape != null)
		{
			var offset =$("#divMap").offset();
			
			ShowInfoboxPanel(popupShape,x+offset.left,y+offset.top);
			
		}
	}
}


//-------------------------------------------------------------------------------------
function ShowInfoboxPanel(o,x,y)
{
	$("#InfoboxBody").html("<div style='margin-top:64px;margin-bottom:64px;text-align:center;'><img src='templates/images/ajax-loader.gif'/></div>");
	ix=x;
	iy=y;
	
	var params ="ID=" + o.myID + "&ClusterType=" + o.ClusterType + "&DataType=" + o.DataType;
	$.post("templates/Handler/Infobox.ashx", params, ReceiveInfoboxDetails);
}

//-------------------------------------------------------------------------------------
function ShowInfoboxPanel3(o,id,dataType)
{
	$("#InfoboxPanel").css("width","260px").css("height","");
	var params = "ID=" + id + "&ClusterType=S&DataType=" + dataType;
	$.post("templates/Handler/Infobox.ashx", params, ReceiveInfoboxDetails);
}


//-------------------------------------------------------------------------------------
function ReceiveInfoboxDetails(arg)
{
	$("#InfoboxBody").html(arg).css("left",-1000).css("top",-1000).show();
	window.setTimeout("RepositionInfobox()",1);
}

//-------------------------------------------------------------------------------------
// checks if the infobox is out of bounds and moves it via animation into screen
function RepositionInfobox()
{
	var panel	= $("#InfoboxPanel");
	var height	= panel.height();
	var panelWidth = panel.width();
	if(ix + panelWidth + 48 > GetWindowWidth())
	{

		ix = ix - (panelWidth + 48);
	}
	iy-=(height/2);
	if (iy+height>GetWindowHeight())
		iy=GetWindowHeight()-(height+32);
	panel.css("left",ix+32).css("top",iy).show();
	
}
//-------------------------------------------------------------------------------------
function GetSelectedPoiCategories()
{
	var s = "";
	var c = document.getElementsByTagName("input");
	for (var i = 0; i < c.length; i++)
	{
		if (c[i].type == "checkbox")
		{
			//alert(c[i].title + "   " + c[i].title.indexOf("cat_") + "     " + c[i].checked);
			if (c[i].id.indexOf("cat_") != -1)
				if (c[i].checked == true) s += c[i].id.substr(4) + ",";
		}
	}
	return s;
}

//-------------------------------------------------------------------------------------
function HideInfoboxPanel()
{
	if (map.GetMapMode() == VEMapMode.Mode3D)
	{
		$("#InfoBoxPanelShim").hide();
		$("#InfoboxPanel").hide();
	}
	else
	$("#InfoboxPanel").fadeOut("normal");
}

//-------------------------------------------------------------------------------------
function DelayedGetAccomodations()
{
	if (accomodationTimerID!=null)
		window.clearTimeout(accomodationTimerID);
	
	accomodationTimerID = window.setTimeout("GetAccomodations()", 1000);
}

//-------------------------------------------------------------------------------------
function GetAccomodations()
{
	accomodationTimerID = null;
	
	if (accomodationSearchType==-1)
	{
		accomodationShapeLayer.DeleteAllShapes();
		return;
	}
	
	var v=map.GetMapView();
	var params=	"TopLeftLatitude=" + v.TopLeftLatLong.Latitude + 
				"&TopLeftLongitude=" + v.TopLeftLatLong.Longitude +
				"&BottomRightLatitude=" + v.BottomRightLatLong.Latitude +
				"&BottomRightLongitude=" + v.BottomRightLatLong.Longitude +
				"&ZoomFactor=" + map.GetZoomLevel() +
				"&MinPrice=" + minPrice +
				"&MaxPrice=" + maxPrice +
				"&AccomodationTypes=" + $("#" + cboAccomodationTypeClientID).val() +
				"&RoomTypes=" + $("#" + cboRoomTypeClientID).val() +
				"&Adults=" + adults;


				 
	$.post("templates/Handler/Accomodations.ashx",params,ReceiveAccomodations);
	
	$("#AccomodationPanelResultBody").html("<div style='text-align:center;padding-top:64px;font-family:Arial, Helvetica, Sans-Serif;font-size:11px;'><img src='templates/images/ajax-loader.gif' /><br/>einen Moment bitte...</div>");
}

//-------------------------------------------------------------------------------------
function ReceiveAccomodations(arg)
{
	$("#AccomodationPanelResultBody").html("");

	accRows=arg.split('\n');
	accIndex=0;
	accDisplayIndex = 0;
	//accomodationShapeLayer.DeleteAllShapes();
	if (accRows.length>1)
		window.setTimeout("DelayedAddAccomodations()",1);
	else
		AfterReceiveAccomodations();
}

//-------------------------------------------------------------------------------------
function DelayedAddAccomodations()
{
	for(var ii=accIndex;ii<accIndex+100;ii++)
	{ 
		if ( ii>=accRows.length-1) break;
		columns=accRows[ii].split('^');
		if (columns[0] == "C")
		{
			AddAJAXPin(accomodationShapeLayer, "C", "ACC", columns[3], new VELatLong(parseFloat(columns[1]), parseFloat(columns[2])), "templates/images/icon-unterkunft-v01.gif", columns[4],"templates/images/icon-unterkunft-v01.gif");
		}
		else
		{
			AddAJAXPin(accomodationShapeLayer,"S", "ACC", columns[3], new VELatLong(parseFloat(columns[1]), parseFloat(columns[2])), "templates/images/icon-unterkunft-v01.gif", columns[4],"templates/images/icon-unterkunft-v01.gif");
		}
		
	}

	accIndex=ii+1;
	if (ii<accRows.length-1)
		window.setTimeout("DelayedAddAccomodations()",20);
	else
		AfterReceiveAccomodations();
}

//-------------------------------------------------------------------------------------
function AfterReceiveAccomodations()
{
	bBlockUpdatePois = false;
	//HideLoadingPanel();
}

//-------------------------------------------------------------------------------------
function ChangeAccomodationSearchType(i)
{
	accomodationSearchType = i;
	UpdateData();
	
	if (accomodationSearchType==2)
		$("#btnSearchAccomodation").show();
	else 
		$("#btnSearchAccomodation").hide();
}

//-------------------------------------------------------------------------------------
function ChangeAccomodationSearchParameters()
{
	if (accomodationSearchType ==0)
		UpdateData();
}

//-------------------------------------------------------------------------------------
function ShowPanel(name)
{
	$("#WelcomePanel").hide();
	$("#PoiPanel").hide();
	$("#TourPanel").hide();
	$("#AccomodationPanel").hide();
	$("#RestaurantPanel").hide();
	if (name == "TourPanel")
	{
		ShowTileLayer("osm");
		$("#cbOsm").attr("checked","checked");
	}
	else
	{
		ShowTileLayer("");
	}

	$("#" + name).show();
	$("#" + name).parent('div').parent('td').show();
	
	$("#divMap").parent('div').attr('class','ContentContainerSmall');
	$("#divMap").parent('div').parent('td').parent('tr').parent('tbody').parent('table').css('width','60%');
	
	map.Resize(602, 600);
}

function HidePanel(name)
{
	$("#" + name).parent('div').parent('td').hide();
	
	$("#divMap").parent('div').parent('td').parent('tr').parent('tbody').parent('table').css('width','100%');
	$("#divMap").parent('div').attr('class','');
	
	var width = $("#divMap").parent('div').parent('td').parent('tr').parent('tbody').parent('table').width();
	var height = $("#divMap").parent('div').parent('td').parent('tr').parent('tbody').parent('table').height();
	map.Resize(width, height);
}

//-------------------------------------------------------------------------------------
function InitializeRouteDistanceSlider()
{
	$("#routeDistanceRangeSlider").slider({
		range: true,
		min: 20,
		max: 280,
		values: [20, 280],
		slide: function(event, ui)
		{
			$("#routeDistanceRangeSliderLabel").val(ui.values[0] + 'Km - ' + ui.values[1] + 'Km');
			routeMinKm=ui.values[0];
			routeMaxKm=ui.values[1];
			DelayedGetRouteList();
		}
	});
	$("#routeDistanceRangeSliderLabel").val($("#routeDistanceRangeSlider").slider("values", 0) + 'Km - ' + $("#routeDistanceRangeSlider").slider("values", 1) + 'Km');
}

//-------------------------------------------------------------------------------------
function InitializeAccomodationPriceRangeSlider()
{
	$("#priceRangeSlider").slider({
		range: true,
		min: 10,
		max: 299,
		values: [10, 299],
		slide: function(event, ui)
		{
			$("#priceRangeSliderLabel").html(ui.values[0] + ' &euro; - ' + ui.values[1] + ' &euro;');
			minPrice = ui.values[0];
			maxPrice = ui.values[1];
			DelayedGetAccomodations();
			
		}
	});
	$("#priceRangeSliderLabel").html($("#priceRangeSlider").slider("values", 0) + ' &euro; - ' + $("#priceRangeSlider").slider("values", 1) + ' &euro;');
}

//-------------------------------------------------------------------------------------
function InitializeAccomodationPersonRangeSlider()
{
	$("#accomodationPersonRangeSlider").slider({
		range: false,
		min: 1,
		max: 9,
		values: [1],
		slide: function(event, ui)
		{
			$("#accomodationPersonRangeLabel").html( ui.values[0] + " "  + (ui.values[0]==1 ? personLabel : personsLabel));
			adults = ui.values[0];
			DelayedGetAccomodations();
			
		}
	});
	$("#accomodationPersonRangeLabel").html("1 " + personLabel);
}


//-------------------------------------------------------------------------------------
function DelayedGetRouteList()
{

	if (routeListTimerID!=null)
		window.clearTimeout(routeListTimerID);
		
	routeListTimerID = window.setTimeout("GetRouteList()",1000);
}

//-------------------------------------------------------------------------------------
function GetRouteList()
{
	routeListTimerID = null;
	
	var v = map.GetMapView();
	
	var params = "TopLeftLatitude=" + v.TopLeftLatLong.Latitude +
						 "&TopLeftLongitude=" + v.TopLeftLatLong.Longitude +
						 "&BottomRightLatitude=" + v.BottomRightLatLong.Latitude +
						 "&BottomRightLongitude=" + v.BottomRightLatLong.Longitude +
						 "&Category=" + $("#" + cboCategoryClientID).val() +
						 "&MinKm="+routeMinKm +
						 "&MaxKm="+routeMaxKm +
						 "&ActiveID="+activeTourID;

	$.post("templates/Handler/RouteList.ashx", params, ReceiveRouteList);
	
	$("#TourPanelResultBody").html("<div style='text-align:center;padding-top:64px;font-family:Arial, Helvetica, Sans-Serif;font-size:11px;'><img src='templates/images/ajax-loader.gif' /><br/>einen Moment bitte...</div>");
}

//-------------------------------------------------------------------------------------
function ReceiveRouteList(arg)
{
	$("#TourPanelResultBody").html(arg);
}

var activeTourControlID="";
//-------------------------------------------------------------------------------------
function GetTour(tourID, control)
{	
//	routeShapeLayer.DeleteAllShapes();
	
	if (activeTourID==tourID)
	{
		$(control).html($(control).attr("showText"));
		activeTourID="";
		return;
	}
	else
	{
		if (activeTourControlID!="")
			$("#" + activeTourControlID).html($("#" + activeTourControlID).attr("showText"));
		activeTourControlID=control.id;
		$(control).html($(control).attr("hideText"));
		activeTourID = tourID;
		$.post("templates/Handler/RouteData.ashx", "ID="+tourID , ReceiveTours);
	}
}

function GetTourNew(tourID, control)
{	
	var check = $(control).attr("checked");
	if(check==false)
	{	
		var shape;
		while((shape=GetShapeById(routeShapeLayer,tourID))!=null)
		{
			routeShapeLayer.DeleteShape(shape);
			$.post("templates/Handler/TourDataDeselect.ashx", "ID="+tourID, DummyFunc);
		}
		return;
	}
	else
	{
		$.post("templates/Handler/RouteData2.ashx", "ID="+tourID , ReceiveTours);	
	}
}

function DummyFunc(arg)
{
return;
}

function GetTourWithoutChecked(tourID)
{
	$.post("templates/Handler/RouteData2.ashx", "ID="+tourID , ReceiveTours);
}

function GetShapeById(shapeLayer,id)
{
	var l=shapeLayer.Annotations.length;
	for(var i=0;i<l;i++)
		if (shapeLayer.Annotations[i].myID==id) return shapeLayer.Annotations[i];
	
	return null;
}

//-------------------------------------------------------------------------------------
function ReceiveTours(arg)
{
	var rows;
	var columns;
	var points=new Array();	
	var allPoints = new Array();
	var segmentID=0;

	//routeShapeLayer.DeleteAllShapes();
	rows=arg.split('\n');
	for (var ii = 1; ii < rows.length - 1; ii++)
	{
		columns = rows[ii].split('^');
		points = new Array();
		for (var j = 3; j < columns.length; j += 2)
		{
			points.push(new VELatLong(parseFloat(columns[j]), parseFloat(columns[j + 1])));
			allPoints.push(new VELatLong(parseFloat(columns[j]), parseFloat(columns[j + 1])));
		}

		var shape = new VEShape(VEShapeType.Polyline, points);
		shape.SetTitle("");
		shape.SetLineWidth(3);
		//shape.SetLineColor(new VEColor(0x21,0xb4,0xd6, 1.0));
		shape.SetLineColor(new VEColor(colors[colorIndex*3],colors[colorIndex*3+1],colors[colorIndex*3+2],1.0));
		shape.HideIcon();
		shape.myID=rows[0];
		//shapeArray.push(shape.GetID());

		routeShapeLayer.AddShape(shape);

	}
	
	colorIndex++;
	if (colorIndex>6) colorIndex=0;
	
	//map.SetMapView(allPoints);
}

var colors=new Array(	0x00,0x00,0xff,
						0x00,0xff,0x00,
						0xff,0x00,0x00,
						0xff,0x7f,0x00,
						0xff,0x00,0xff,
						0x00,0xff,0xff,
						0xff,0xff,0x00);
var colorIndex=0;

// -------------------------------
// Planer functions
function AddPlanerItem(id,name, htmlelement,itemType)
{
//var s= "Action=ADD&ID=" + id + "&Name=" + name + "&Type=" + itemType + "&TemplateSize=large";
var s= "Action=ADD&ID=" + id + "&Name=" + name + "&Type=" + itemType + "&TemplateSize=";

	$.post("templates/Planer.ashx",s, ReceivePlaner);
}
// -------------------------------
function DeletePlanerItemLarge(id,htmlelement)
{
	$(htmlelement.parentNode.parentNode.parentNode.parentNode).fadeOut("slow",function(){$.post("templates/Planer.ashx", "Action=DELETE&ID=" + id + "&TemplateSize=large", ReceivePlaner);});
}

// -------------------------------
function ReceivePlaner(arg)
{
	var rows = arg.split('^');
	var count = rows[0]>0 ? " (" + rows[0] + ")" : "";
	$("#PlanerPanelItemCount").html(count);
	$("#PlanerPanelBody").html(rows[1]);
}



function StartDateSelected(date)
{
	var segments = date.split(".");
	var startDate = new Date(segments[2], segments[1] - 1, segments[0]);
	segments = $("#txtEndDate").val().split(".");
	var endDate = new Date(segments[2], segments[1] - 1, segments[0]);

	if (startDate.getTime() >= endDate.getTime())
	{
		var newDate = AddDays(startDate, 1);

		$("#txtEndDate").val((newDate.getDate() < 10 ? "0" : "") + newDate.getDate() + "." + ((newDate.getMonth() + 1) < 10 ? "0" : "") + (newDate.getMonth() + 1) + "." + newDate.getFullYear());
	}

}

function EndDateSelected(date)
{
	var segments = date.split(".");
	var endDate = new Date(segments[2], segments[1] - 1, segments[0]);
	segments = $("#txtStartDate").val().split(".");
	var startDate = new Date(segments[2], segments[1] - 1, segments[0]);

	if (startDate.getTime() >= endDate.getTime())
	{
		var newDate = AddDays(endDate, -1);

		$("#txtStartDate").val((newDate.getDate() < 10 ? "0" : "") + newDate.getDate() + "." + ((newDate.getMonth() + 1) < 10 ? "0" : "") + (newDate.getMonth() + 1) + "." + newDate.getFullYear());
	}

}


function AddDays(myDate, days)
{
	return new Date(myDate.getTime() + days * 24 * 60 * 60 * 1000);
}


function MapHeader_OnHover(o)
{
	for(var i=1;i<10;i++)
		SetVisibility("MapHeaderOverlay" + i, false);

	var l=GetPositionLeft(o);
	var t=45;
	
	switch(o.className)
	{
		case "TopNavigationBlock TopNavigationBlock1":
			SetVisibility("MapHeaderOverlay1",true);
			SetPosition("MapHeaderOverlay1",l,t);
			break;
			
			
		case "TopNavigationBlock TopNavigationBlock2":
			SetVisibility("MapHeaderOverlay2",true);
			SetPosition("MapHeaderOverlay2",l,t);
			break;
		case "TopNavigationBlock TopNavigationBlock3":
			SetVisibility("MapHeaderOverlay3",true);
			SetPosition("MapHeaderOverlay3",l,t);
			break;
			
		case "TopNavigationBlock TopNavigationBlock4":
			SetVisibility("MapHeaderOverlay4",true);
			SetPosition("MapHeaderOverlay4",l,t);
			break;
		case "TopNavigationBlock TopNavigationBlock5":
			SetVisibility("MapHeaderOverlay5",true);
			SetPosition("MapHeaderOverlay5",l-7,t);
			break;
		case "TopNavigationBlock TopNavigationBlock6":
			SetVisibility("MapHeaderOverlay6",true);
			SetPosition("MapHeaderOverlay6",l,t);
			break;
			
		case "TopNavigationBlock TopNavigationBlock7":
			SetVisibility("MapHeaderOverlay7",true);
			SetPosition("MapHeaderOverlay7",l,t);			
			break;
			
		case "TopNavigationBlock TopNavigationBlock8":
			SetVisibility("MapHeaderOverlay8",true);
			SetPosition("MapHeaderOverlay8",l,t);			
			break;
			
		case "TopNavigationBlock TopNavigationBlock9":
			SetVisibility("MapHeaderOverlay9",true);
			SetPosition("MapHeaderOverlay9",l,t);			
			break;
	}
}


function ShowExtendedDetailsPanel(id, typ)
{
	HideInfoboxPanel();
	
	$("#ExtendedDetailsPanelBody").html("<iframe src='templates/ExtendedDetails.aspx?ID=" + id + "&Type=" + typ + "' frameborder='0' width='594px' height='592px' scrolling='no'></iframe>");

	$("#ExtendedDetailsPanel").css("left",(GetWindowWidth()-600)/2).show();
	$("#divModalOverlay").css("width", GetWindowWidth()).css("height",document.body.scrollHeight).css("display", "block").css("opacity", "0.7");
}

function HideExtendedDetailsPanel()
{

	$("#ExtendedDetailsPanel").hide();
	$("#divModalOverlay").hide();
}

//-------------------------------------------------------------------------------------
function GetAvailableAccomodationTypes()
{
	var v = map.GetMapView();

	var params = "TopLeftLatitude=" + v.TopLeftLatLong.Latitude +
						 "&TopLeftLongitude=" + v.TopLeftLatLong.Longitude +
						 "&BottomRightLatitude=" + v.BottomRightLatLong.Latitude +
						 "&BottomRightLongitude=" + v.BottomRightLatLong.Longitude;

	$.post("templates/Handler/AvailableAccomodationTypes.ashx", params, ReceiveAvailableAccomodationTypes);
}

//-------------------------------------------------------------------------------------
function ReceiveAvailableAccomodationTypes(arg)
{
	var rows = arg.split('\n');
	var o = document.getElementById(cboAccomodationTypeClientID);
	if (o == null) return;
	var oldValue = o.value;
	o.options.length = 0;
	o.options[0]=new Option("Beliebig", "", false, true);
	for (var i = 0; i < rows.length; i++)
	{
		var columns = rows[i].split("^");
		o.options[i+1] = new Option(columns[0], columns[1], false, (columns[1] == oldValue ? true : false));
	}

	UpdateRoomDropdown();
}

function UpdateRoomDropdown()
{

	var v = map.GetMapView();

	var params = "TopLeftLatitude=" + v.TopLeftLatLong.Latitude +
						 "&TopLeftLongitude=" + v.TopLeftLatLong.Longitude +
						 "&BottomRightLatitude=" + v.BottomRightLatLong.Latitude +
						 "&BottomRightLongitude=" + v.BottomRightLatLong.Longitude +
						 "&AccomodationTypeID=" + $("#" + cboAccomodationTypeClientID).val();

	$.post("templates/Handler/AvailableRoomTypes.ashx", params, ReceiveAvailableRoomTypes);
	return;
	var val = $("#" + cboAccomodationTypeClientID).val();
	var roomDropdown =  document.getElementById(cboRoomTypeClientID);

	roomDropdown.options.length = 1;
	roomDropdown.options[0] = new Option("Beliebig", "", false, true);

	switch (val)
	{
		case "cee6fa40-a43d-4648-866e-727aac09eeba": //Ferienhaus
			roomDropdown.options[0] = new Option("Haus", "69A2140F-3F1E-4128-973D-CD008DDDAE00", false, true);
			break;
		case "736d7757-a626-4714-bde7-f009e109e36e": // Ferienwohnung
			roomDropdown.options[1] = new Option("Wohnung", "CC01E4A7-BC14-4AC2-86C5-B828F2F94CDC", false, true);
			roomDropdown.options[2] = new Option("Appartement", "C829F00E-1F8F-4DDC-A51B-37B551A46553", false, false);
			break;

		default:
			roomDropdown.options[1] = new Option("Einzelzimmer", "1A632274-53C4-4F39-B9CE-48838FDF0590", false, false);
			roomDropdown.options[2] = new Option("Doppelzimmer", "46100017-3079-4087-B3E5-13205AED78CE", false, false);

			roomDropdown.options[3] = new Option("Dreibettzimmer", "0DB26B9C-581D-4AFF-98F5-E1E8B9CA2EE4", false, false);
			roomDropdown.options[4] = new Option("Vierbettzimmer", "02F398A3-6D35-4656-879D-658D8EC2EE90", false, false);


			roomDropdown.options[5] = new Option("Mehrbettzimmer", "D14CA999-9450-439B-9BC8-154EB9F1BB71", false, false);
			roomDropdown.options[6] = new Option("Gemeinschaftsunterkunft,", "DDBF13EC-D2C9-4183-829F-5BD4B70784DB", false, false);

			roomDropdown.options[7] = new Option("Appartement", "C829F00E-1F8F-4DDC-A51B-37B551A46553", false, false);
			roomDropdown.options[8] = new Option("Suite", "7A9014B7-BB72-44F7-B73F-F77413D555E7", false, false);
			roomDropdown.options[9] = new Option("Studio", "3A16FB26-6812-44A4-AA64-40F31DED80F2", false, false);

			roomDropdown.options[10] = new Option("Wohnung", "CC01E4A7-BC14-4AC2-86C5-B828F2F94CDC", false, false);
			roomDropdown.options[11] = new Option("Haus", "69A2140F-3F1E-4128-973D-CD008DDDAE00", false, false);
			break;
					
			
	}
}


function ReceiveAvailableRoomTypes(arg)
{
	//alert(arg);

	var roomDropdown = document.getElementById(cboRoomTypeClientID);

	var oldSelectedValue = $("#" + cboRoomTypeClientID).val();


	var found = false;
	roomDropdown.options.length = 1;
	roomDropdown.options[0] = new Option("Beliebig", "", false, true);

	var rows = arg.split('\n');
	for (i = 0; i < rows.length-1; i++)
	{
		var columns = rows[i].split('^');
		roomDropdown.options[i + 1] = new Option(columns[1], columns[0], false, (columns[0] == oldSelectedValue ? true : false));
		if (columns[0] == oldSelectedValue) found = true;
		
	}
	if (oldSelectedValue == "")
		found = true;

	if (found == false)
	{
		GetAccomodations();
	}
	
}

// -------------------------- Hinzugefügt von Oliver (TileLayer OpenStreetMaps) ------------------------------

var OpenStreetMapLayerOn= false;

function SwitchTileLayer()
{
	if (OpenStreetMapLayerOn)
	{
		ShowTileLayer("");
	}
	else
	{
		ShowTileLayer("osm");
	}
}

function ShowTileLayer(name)
{

	try { map.DeleteTileLayer("tilelayer"); } catch (e) { }
	try
	{
		var bounds = [new VELatLongRectangle(new VELatLong(54, 0), new VELatLong(48, 14))];
		var tileSourceSpec;
		OpenStreetMapLayerOn = false;
		switch (name)
		{
			case "rvrgray":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=Grau");
				tileSourceSpec.Bounds = bounds;
				tileSourceSpec.MinZoomLevel = 15;
				break;

			case "rvrcolor":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=Color");
				tileSourceSpec.Bounds = bounds;
				tileSourceSpec.MinZoomLevel = 15;
				break;
			case "vitalesland":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/TilesVitalesland/%4.png");
				tileSourceSpec.MinZoomLevel = 1;
				break;
			case "hillshaded":
				map.SetMapStyle(VEMapStyle.Shaded);
				return;

			case "orthos":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=orthos");
				tileSourceSpec.MinZoomLevel = 1;
				break;

			case "spw-bunt":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=spw-bunt");
				tileSourceSpec.MinZoomLevel = 1;
				break;

			case "spw-grau":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=spw-grau");
				tileSourceSpec.MinZoomLevel = 1;
				break;

			case "spw-light":
				tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://80.148.41.197/WMSTileServer/%4.png?Layer=spw-light");
				tileSourceSpec.MinZoomLevel = 1;
				break;

			case "osm":
				var tileSourceSpec = new VETileSourceSpecification("tilelayer", "", 1, bounds, 1, 18, getTilePath, 1.0, 100);
				tileSourceSpec.MinZoomLevel = 1;
				OpenStreetMapLayerOn = true;
				break;


			//tileSourceSpec = new VETileSourceSpecification("tilelayer", "http://%1%2.ortho.tiles.virtualearth.net/tiles/%3%4?g=%6&shading=hill");  
			//tileSourceSpec.MinZoomLevel = 1; 
			//break; 

		}
		tileSourceSpec.NumServers = 1;
		tileSourceSpec.MaxZoomLevel = 20;
		tileSourceSpec.Opacity = 1.0;
		tileSourceSpec.ZIndex = 49;
		map.AddTileLayer(tileSourceSpec, true);
	} catch (e) { }


	//AddMyLayer();

}

function ChangeMapStyleHandler(e)
{
	// Meldung anzeigen, wenn bei aktiviertem Openstreet-Layer der Mapstyle geändert werden soll
	if (OpenStreetMapLayerOn == true & e.mapStyle != "o")
	{
		alert("Bitte Openstreetmap deaktivieren!");
	}
}


function getTilePath(tileContext)
{
	return "http://tile.openstreetmap.org/" + tileContext.ZoomLevel + "/" + tileContext.XPos + "/" + tileContext.YPos + ".png";
}
// -------------------------------- Ende Einfügung Oliver ---------------------------------
