﻿
var map = null;
var geocoder = null;
var Address = null;
var Point = null;
var Timer = null;

// preload loading image
var LoadingImage = new Image();
LoadingImage.src = "/images/loading2.gif";

function setupMap()
{
	if (GBrowserIsCompatible())
	{
		map = new GMap2(document.getElementById("GoogleMap"));
		geocoder = new GClientGeocoder();

		geocoder.getLatLng(Address.replace(/ /, ""), function(point)
		{
			if (point)
			{
				map.setCenter(point, 13);
				map.addControl(new GSmallMapControl());
				map.enableDoubleClickZoom();
				//map.enableScrollWheelZoom();
				/*
				map.addControl(new PanoMapTypeControl()); 
				var pano_layer = new PanoramioLayer(map);
				pano_layer.enable();
				*/
				var marker = new GMarker(point);
				map.addOverlay(marker);
			}
		});
	}
}

var GmapCreated = false;
function InitGMap()
{
	if (GmapCreated)
		return;
	GmapCreated = true;
	setupMap(Address);
}

var CurrentReviewPage = 1;

function CreateDescriptionMap()
{
	var map = new GMap2(document.getElementById("DescriptionMap"));
	var geocoder = new GClientGeocoder();
	geocoder.getLatLng(Address, function(point)
	{
		if (point)
		{
			map.setCenter(point, 13);
			map.setZoom(8);
		}
		var marker = new GMarker(point);
		map.addOverlay(marker);
	});
}

function SelectReviewPage(page)
{
	var e = GetElement("ReviewPage" + CurrentReviewPage);
	if (e)
		e.style.display = "none";
	e = GetElement("ReviewPageNumber" + CurrentReviewPage);
	if (e)
		e.className = "";
	CurrentReviewPage = page;
	e = GetElement("ReviewPage" + CurrentReviewPage);
	if (e)
		e.style.display = "block";
	e = GetElement("ReviewPageNumber" + CurrentReviewPage);
	if (e)
		e.className = "detail_review_page_number_selected";
}

var CurrentTab = 0;
function SelectTab(tab)
{
	if (tab == CurrentTab)
		return;
	
	GetElement("Tab" + CurrentTab).className = "tab_inactive";
	GetElement("TabContent" + CurrentTab).style.display = "none";
	CurrentTab = tab;
	GetElement("Tab" + CurrentTab).className = "tab_active";
	GetElement("TabContent" + CurrentTab).style.display = "block";
	if (CurrentTab == 4)
		InitGMap();
}

function TabOver(tab)
{
	GetElement("Tab" + tab).style.color = "#000000";
}

function TabOut(tab)
{
	GetElement("Tab" + tab).style.color = "";
}

var SelectedDate = null;
var SelectedDateClass = null;

function CalendarDayOver(e)
{
	if (!e)
		e = window.event;
	
	var elem = e.target ? e.target : e.srcElement;
	if (elem.nodeType == 3)
		elem = elem.parentNode;

	if (!elem.className.match(/_hover$/) && !elem.className.match(/_selected$/))
		elem.className += "_hover";
}

function CalendarDayOut(e)
{
	if (!e)
		e = window.event;
	
	var elem = e.target ? e.target : e.srcElement;
	if (elem.nodeType == 3)
		elem = elem.parentNode;

	if (elem.id != "avacell_" + SelectedDate && elem.className.match(/_hover$/))
		elem.className = elem.className.substring(0, elem.className.length - 6);
}

var RequestSelectedDate = null;
var RequestObjectId = null;
var RequestLanguage = null;
var RequestRetries = 0;
var RequestResponseText = null;

function SelectDate(date, objectid, language, retry)
{
	if (SelectedDate != null && SelectedDateClass != null)
		GetElement("avacell_" + SelectedDate).className = SelectedDateClass;

	var cell = GetElement("avacell_" + date);
	if (cell == null)
		return;

	SelectedDate = date;
	if (!retry)
		RequestRetries = 0;
	RequestSelectedDate = date;
	RequestObjectId = objectid;
	RequestLanguage = language;
	
	SelectedDateClass = cell.className;
	if (SelectedDateClass.match(/_hover$/))
		SelectedDateClass = SelectedDateClass.substring(0, SelectedDateClass.length - 6);

	cell.className = "detail_cal_selected";

	if (Timer)
	{
		clearTimeout(Timer);
		Timer = null;
	}

	var request = new HttpRequest();
	var params = new Object();
	params["action"] = "prices";
	params["date"] = date;
	params["objectid"] = objectid;
	params["language"] = language;
	request.Send("GET", "/detail.ashx", SelectDateCompleted, params);

	var target = GetElement("Side");
	for (var i = 0; i < target.childNodes.length; i++)
	{
		if (target.childNodes[i].style)
			target.childNodes[i].style.visibility = "hidden";
	}

	var loading = document.createElement("div");
	loading.className = "detail_prices_loading";
	loading.innerHTML = "<img src='/images/loading2.gif'/><div>Prijzen worden geladen.</div>";
	loading.style.top = "0px";
	target.appendChild(loading);
}

function SelectDateCompleted(request, time)
{
	var data = null;
	try
	{
		RequestResponseText = request.responseText;
		data = eval("(" + request.responseText + ")");
	}
	catch(e)
	{
		data = null;
	}

	if (!data || !data.Variants || !data.Variants.length)
	{
		//GetElement("Tab0Text").innerHTML = "retry: " + RequestRetries;
		if (RequestRetries++ < 5)
		{
			setTimeout(function() {SelectDate(RequestSelectedDate, RequestObjectId, RequestLanguage, true); }, 500);
			return;
		}
	}

	var time = 1000 - time;
	if (time > 0)
		Timer = setTimeout(function(){UpdateSelectedDate(data)}, time);
	else
		UpdateSelectedDate(data);
}

function UpdateSelectedDate(data)
{
	var target = GetElement("Side");
	while(target.childNodes.length > 0)
		target.removeChild(target.childNodes[0]);

	if (!data || !data.Variants || !data.Variants.length)
	{
		if (RequestResponseText == null)
			RequestResponseText = "RequestResponseText == null";
		//if (data == null)
			//ReportError("No prices found", RequestResponseText.replace(/([\[\]{}])/g, "\r\n$1\r\n").replace(/(,|:)/g, "$1\r\n").replace(/((\r\n){2,})/g, "\r\n"));
		target.innerHTML = "<div style='margin-top: 26px'>Geen prijzen gevonden</div>";
		return;
	}

	var wrapper = null;
	var varid = null;
	var prices = null;

	for (var i = 0; i < data.Variants.length; i++)
	{
		var variant = data.Variants[i];
		
		if (varid != variant.Id)
		{
			varid = variant.Id;
			wrapper = document.createElement("div");
			wrapper.className = "details_side_prices";
			target.appendChild(wrapper);
			
			var title = document.createElement("div");
			title.className = "details_side_prices_title";
			title.innerHTML = TextCalcPrice;//variant.Name;
			wrapper.appendChild(title);
		}
		
		for (var j = 0; j < variant.Prices.length; j++)
		{
			var price = variant.Prices[j];
			if (!prices)
				prices = price;
			var p = price.DiscountPrice ? price.DiscountPrice : price.Price;

			var periodwrapper = document.createElement("div");
			periodwrapper.className = "details_side_prices_period";
			if (j + 1 == variant.Prices.length)
				periodwrapper.style.borderBottomWidth = "0px";
			wrapper.appendChild(periodwrapper);

			var table = document.createElement("table");
			table.setAttribute("cellspacing", "0");
			table.setAttribute("cellpadding", "2");
			table.style.width = "100%";
			periodwrapper.appendChild(table);

			var row = table.insertRow(-1);
			var cell = row.insertCell(-1);
			cell.setAttribute("align", "left");
			cell.className = "details_side_prices_date";
			cell.innerHTML = price.StartDate + " " + TextTotenmet + " " + price.EndDate;
			
			cell = row.insertCell(-1);
			cell.setAttribute("align", "right");
			cell.className = "details_side_prices_period_title";
			cell.innerHTML = price.Period;

			///////////////////////////

			var table = document.createElement("table");
			table.setAttribute("cellspacing", "0");
			table.setAttribute("cellpadding", "2");
			table.style.width = "100%";
			periodwrapper.appendChild(table);

			row = table.insertRow(-1);
			cell = row.insertCell(-1);
			cell.className = "details_side_extra_name_large";
			cell.innerHTML = variant.Name;

			cell = row.insertCell(-1);
			cell.className = "details_side_extra_price_large";
			cell.innerHTML = "&euro; " + price.Price.toFixed(2);

			if (price.DiscountPrice)
			{
				row = table.insertRow(-1);
				cell = row.insertCell(-1);
				cell.className = "details_side_discount_name";
				cell.innerHTML = price.DiscountType;

				cell = row.insertCell(-1);
				cell.className = "details_side_discount_price";
				cell.innerHTML = "&euro; -" + (price.Price - price.DiscountPrice).toFixed(2);
			}
			row = table.insertRow(-1);
			cell = row.insertCell(-1);
			cell.setAttribute("colspan", "2");
			cell.className = "details_side_extra_title";
			cell.innerHTML = TextExtraCosts;

			for (var k = 0; k < price.Extras.length; k++)
			{
				var extra = price.Extras[k];
				if (!extra.Required)
					continue;

				p += extra.Price;
				
				row = table.insertRow(-1);
				cell = row.insertCell(-1);
				cell.className = "details_side_extra_name";
				cell.innerHTML = extra.Name;
				
				cell = row.insertCell(-1);
				cell.className = "details_side_extra_price";
				cell.innerHTML = "&euro; " + extra.Price.toFixed(2);
			}

			///////////////////////////

			row = table.insertRow(-1);

			cell = row.insertCell(-1);
			var div = document.createElement('div');
			div.className = "details_side_prices_total";
			div.innerHTML = TextTotal;
			cell.appendChild(div);

			cell = row.insertCell(-1);
			div = document.createElement('div');
			div.className = "details_side_prices_total_price";
			div.innerHTML = "&euro; " + p.toFixed(2);
			cell.appendChild(div);

			row = table.insertRow(-1);

			cell = row.insertCell(-1);
			cell.setAttribute("colspan", "2");
			cell.colSpan = 2;
			cell.setAttribute("align", "right");
			//cell.className = "details_side_prices_button";

			var button = "<table id='BookButton" + j + "' onmouseover='ButtonOver(\"BookButton" + j + "\")' onmouseout='ButtonOut(\"BookButton" + j + "\")' cellspacing='0' cellpadding='0' border='0' onclick='location.href = \"" + BookUrl + "/" + variant.Id + "/" + DateToYYYYMMDD(price.StartDate) + "/" + DateToYYYYMMDD(price.EndDate) + "\"'><tr>";
			button += "<td class='button_left'></td>";
			button += "<td class='button_center'>" + TextBoeken + "</td>";
			button += "<td class='button_right'></td>";
			button += "</tr></table>";

			var linkava = "<table cellspacing='0' cellpadding='0' border='0' onclick='javascript:SelectTab(6);'><tr>";
			linkava += "<td class='link_other_period'>" + LinkAnderePeriode + "</td>";
			linkava += "</tr></table>";
						
			cell.innerHTML = button + linkava;
		}
		
		var bottom = document.createElement('div');
		bottom.className = "detail_side_bottom";
		wrapper.appendChild(bottom);
	}

	if (prices != null)
	{
		wrapper = document.createElement("div");

		wrapper = document.createElement("div");
		wrapper.className = "details_side_prices_extras";
		target.appendChild(wrapper);

		var title = document.createElement("div");
		title.className = "details_side_extras_title";
		title.innerHTML = TextExtras;
		wrapper.appendChild(title);
		
		var table = document.createElement("table");
		table.className = "details_side_extras";
		table.setAttribute("cellspacing", "0");
		table.setAttribute("cellpadding", "2");
		table.style.width = "100%";
		wrapper.appendChild(table);

		for (var k = 0; k < prices.Extras.length; k++)
		{
			var extra = price.Extras[k];
			if (!extra || extra.Required)
				continue;

			row = table.insertRow(-1);
			cell = row.insertCell(-1);
			cell.className = "details_side_extra_name";
			cell.innerHTML = extra.Name;

			cell = row.insertCell(-1);
			cell.className = "details_side_extra_price";
			cell.innerHTML = extra.PriceInfo;
		}

		if (table.rows.length > 0)
		{
			table.rows[0].cells[0].style.paddingTop = "10px";
			table.rows[0].cells[1].style.paddingTop = "10px";
		}
		
		var bottom = document.createElement('div');
		bottom.className = "detail_side_bottom";
		wrapper.appendChild(bottom);
	}
}

function DateToYYYYMMDD(date)
{
	var s = date.split("-");
	return s[2] + "-" + s[1] + "-" + s[0];
}

function PageScoreButton_Click(url, objectid)
{
	try
	{
		var form = document.forms[0];
		var value = GetRadioGroupValue(form, "PageScore", 0);

		if (!value || value < 1 || value > 5)
			return;

		var params = new Object();
		params["value"] = value;
		params["objectid"] = objectid;
		params["url"] = url;
		params["page"] = "detail";

		var request = new HttpRequest();
		request.Send("POST", "/visitorinput.ashx?action=pagescore", null, params);
		GetElement("PageScoreTarget").innerHTML = TextPageScoreBedankt;
	}
	catch(e)
	{
	}
}

function EmailButton_Click(url, objectid, date)
{
	try
	{
		var email = GetElement('EmailAddress').value;

		if (!email.match(/[^@]+@[^.]+\..+/))
		{
			alert('Ongeldig email adres');
			return;
		}

		var params = new Object();
		params["email"] = email;
		params["objectid"] = objectid;
		params["url"] = url;
		params["date"] = date;
		params["nieuwsbrief"] = GetElement('Nieuwsbrief').checked ? "1" : "0";

		var request = new HttpRequest();
		request.Send("POST", "/visitorinput.ashx?action=emailpage", null, params);
		GetElement("EmailText").innerHTML = TextPageEmailBedankt;
		GetElement('EmailAddress').value = "";
	}
	catch(e)
	{
	}
}

function SwitchCalendar()
{
	var c1 = GetElement("calendar_table_1");
	var c2 = GetElement("calendar_table_2");
	var link = GetElement("calendar_link");
	
	if (!c1 || !c2 || !link)
		return;
	
	if (c1.style.display == "none")
	{
		c1.style.display = "block";
		c2.style.display = "none";
		link.innerHTML = TextVolgende;
	}
	else
	{
		c1.style.display = "none";
		c2.style.display = "block";
		link.innerHTML = TextVorige;
	}
}
