/****************************************
(c) 2011 Tomas Klinkenberg, 050media/DBH Nederland
Lay-out: MartiniHotel
Bestand: functies.js
****************************************/

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});
/**
* kamerupdate: fadesout, replaces source and fadesin
**/
function fadeandreplace(element, replaceurl) {
	$(element).fadeOut(750, function() {
		$(element).attr("src", replaceurl);
	});
	$(element).fadeIn(750, function() {
		removeFilter($(this)[0]);
	});
};

/**
* kamerupdate: fixes IE bug
**/
function removeFilter(element) {
	if(element.style.removeAttribute){
		element.style.removeAttribute('filter');
	}
}


/**
* translate days to Dutch
**/
function translateDay(day) {
	if(day == 0)
		return "zo";
	else if(day == 1)
		return "ma";
	else if(day == 2)
		return "di";
	else if(day == 3)
		return "wo";
	else if(day == 4)
		return "do";
	else if(day == 5)
		return "vr";
	else if(day == 6)
		return "za";
	else
		return false;
}

/**
* NivoSlider: create
**/
$('#slider').nivoSlider({
	keyboardNav: false
});

/**
* kamer update: switch pictures
**/
$(".image-ch-small").live("click", function() {
	var big = $(".image-ch-large img").attr("src");
	var small = $(this).find("img").attr("src");
	$(".image-ch-small img").attr("src", big);
	fadeandreplace(".image-ch-large img", small);
	$(".image-ch-large a").attr("href", small);
});

/**
* kamer update: open fancybox
**/
$(".image-ch-large a").fancybox({
	'titleShow' : false
});

jQuery(function($){
        $.datepicker.regional.nl = {
                closeText: 'Sluiten',
                prevText: '←',
                nextText: '→',
                currentText: 'Vandaag',
                monthNames: ['januari', 'februari', 'maart', 'april', 'mei', 'juni',
                'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
                monthNamesShort: ['jan', 'feb', 'maa', 'apr', 'mei', 'jun',
                'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
                dayNames: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
                dayNamesShort: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
                dayNamesMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
                dateFormat: 'dd/mm/yy', firstDay: 1,
                isRTL: false};
        $.datepicker.setDefaults($.datepicker.regional.nl);
});

/**
* JQuery datepicker: create
**/
$('.imgdatepicker').each(function() {
	var maxboek = $('#maxboek').val();
	$(this).datepicker({
	buttonImage: 'http://budgetthostels.nl/templates/budgetthostels.nl/images/layout/calender.png',
	buttonImageOnly: true,
	changeMonth: true,
	changeYear: true,
	yearRange:"c:"+maxboek,
	showOn: 'both',
	dateFormat: 'dd-mm-yy'
	});
	
	if(!$(this).next().next().html()) {
		var date = new Date();
		var month = date.getMonth()+1;
		if(month < 10)
			month = '0' + month;
		
		var day = date.getDate();
		if(date.getDate() < 10)
			day = '0' + day;
		
		$(this).val(day + "-" + date.getMonth() +1 + "-" + date.getFullYear());
		$(this).next().next().html(day + "-" + month + "-" + date.getFullYear());
	}
});

$('.datepick').live("click", function() {
	$('#boeking_from').datepicker("show");
});

$('.datepick2').live("click", function() {
	$('#boeking_till').datepicker("show");
});

$("#sidebardatepicker a").click(function(){
	if($(this).attr("id") != "boeking_date_submit") {
		$(this).parent().next().find("input").datepicker("show");
		return false;
	}
});

/**
* JQuery Datepicker: update text
**/
$('.imgdatepicker').live("change", function(){
	var text = $(this).next().next();
	text.html($(this).attr("value"));
});

$('#sidebardatepicker #boeking_from').live("change", function(){
	$('#sidebardatepicker #boeking_till').trigger("change");
})

/**
* JQuery sidebar datepicker: check for negative date
**/

$('#datepickerform #boeking_from').live("change", function(){
	$('#datepickerform #boeking_till').trigger("change");
})

$('#datepickerform #boeking_till').live("change", function(){
	var from = $(this).parent().parent().parent().find("#boeking_from").val();
	var fromexploded = from.split("-");
	var fromtime = new Date(fromexploded[2],fromexploded[1]-1,fromexploded[0]);
	var tillexploded = $(this).val().split("-");
	var tilltime = new Date(tillexploded[2],tillexploded[1]-1,tillexploded[0]);
	if(fromtime.getTime() >= tilltime.getTime()) {
		$(this).parent().find(".datepick2").css("color", "#FF0000");
	} else {
		$(this).parent().find(".datepick2").css("color", "#FFFFFF");
	}
	
	if(fromtime.getTime() < (new Date().getTime() - (60 * 60 * 24 * 1000))) {
		$(this).parent().parent().parent().find(".datepick").css("color", "#FF0000");
	} else {
		$(this).parent().parent().parent().find(".datepick").css("color", "#FFFFFF");
	}
});




/**
* JQuery mainpage datepicker: check for negative date
**/

$('#sidebardatepicker #boeking_from').live("change", function(){
	$('#sidebardatepicker #boeking_till').trigger("change");
})

$('#sidebardatepicker #boeking_till').live("change", function(){
	var from = $(this).parent().parent().parent().find("#boeking_from").val();
	var fromexploded = from.split("-");
	var fromtime = new Date(fromexploded[2],fromexploded[1]-1,fromexploded[0]);
	var tillexploded = $(this).val().split("-");
	var tilltime = new Date(tillexploded[2],tillexploded[1]-1,tillexploded[0]);
	if(fromtime.getTime() >= tilltime.getTime()) {
		$(this).parent().find(".datepick2").css("color", "#FF0000");
	} else {
		$(this).parent().find(".datepick2").css("color", "#FFFFFF");
	}
	
	if(fromtime.getTime() < (new Date().getTime() - (60 * 60 * 24 * 1000))) {
		$(this).parent().parent().find(".datepick").css("color", "#FF0000");
	} else {
		$(this).parent().parent().find(".datepick").css("color", "#FFFFFF");
	}
});

/**
* JQuery datepicker:check for negative date onsubmit
**/
$('#boeking_date_submit').live("click", function() {
	var from = $("#boeking_from").val();
	var till = $("#boeking_till").val();
	var fromexploded = from.split("-");
	var fromtime = new Date(fromexploded[2],fromexploded[1]-1,fromexploded[0]);
	var tillexploded = till.split("-");
	var tilltime = new Date(tillexploded[2],tillexploded[1]-1,tillexploded[0]);
	var time = new Date();
	if(fromtime.getTime() < tilltime.getTime() && fromtime.getTime() >= (parseInt(time.getTime()) - (60 * 60 * 24 * 1000))) {
		$('#datepickerform').submit();
	} else {
		alert("Geen geldige vertekdatum of vertrekdatum geselecteerd");
		return false;
	}
});

/**
* datepicker: change the number of rooms
**/
$("#aantal_kamers").live("change", function() {
	$.post('/book/', "type=aantalkamers&aantalkamers=" + $(this).val(), function(data) {
		if(data == 'success')
			window.location = '/book/';
		else
			alert(data);
	});
});


/**
* datepicker: arrangementen boolean
**/
var is_arrangement = false;

/**
* datepicker: cleanse the object from other classes
**/
function cleanseObject(object) {
	object.removeClass("full");
	object.removeClass("minimum");
	object.removeClass("notava");
	return object;
}

/**
* datepicker: update the month
**/
$(".datepicker_maand").live("change", function() {
	var maandval = parseInt($(this).val());
	var jaarval = parseInt($(this).next().val());
	
	if($(this).next().next().attr("id") == "boeking_datepickerwrapper_van") {
		$("#boeking_datepickerwrapper_tot").prev().val(jaarval);
		$("#boeking_datepickerwrapper_tot").prev().prev().val(maandval);
		$("#boeking_datepickerwrapper_tot").prev().prev().find("option").each(function() {
			if(parseInt($(this).val()) < maandval && jaarval == parseInt($("#boeking_datepickerwrapper_tot").prev().val()))
				$(this).attr("disabled", "disabled");
			else
				$(this).removeAttr("disabled");
		});
		$("#boeking_datepickerwrapper_tot").prev().find("option").each(function() {
			if(parseInt($(this).val()) < jaarval)
				$(this).attr("disabled", "disabled");
			else
				$(this).removeAttr("disabled");
		});
	} else {
		if(parseInt($(this).val()) < maandval && $(this).next().val() > $("#boeking_datepickerwrapper_tot").prev()) {
			$(this).find("option").each(function() {
				$(this).removeAttr("disabled");
			});
		}
	}
	$("#boeking_datepickerwrapper_tot .selectedtd").each(function() {
		$(this).removeClass("selectedtd");
		$(this).find("a").each(function() {
			$(this).removeClass("selected");
		});
	});
	
	$(".minimum").each(function() {
		$(this).removeClass("minimum");
	});
	
	updateBeschikbaarheid();
});

$(".datepicker_jaar").live("change", function() {
	if($(this).next().attr("id") == "boeking_datepickerwrapper_van") {
		var jaarval = $(this).val();
		var maandval = $(this).prev().val();
		$("#boeking_datepickerwrapper_tot").prev().val(jaarval);
		$("#boeking_datepickerwrapper_tot").prev().prev().val(maandval);
		var currentdate = new Date();
		//update van month
		$("#boeking_datepickerwrapper_van").prev().prev().find("option").each(function() {
			var date = new Date(jaarval, $(this).attr("value"), 1);
			if(currentdate.getTime() > date.getTime())
				$(this).attr("disabled", "disabled");
			else
				$(this).removeAttr("disabled");
		});
		
		
		//update tot month
		$("#boeking_datepickerwrapper_tot").prev().prev().find("option").each(function() {
			if(parseInt($(this).attr("value")) < parseInt(maandval) && jaarval == $("#boeking_datepickerwrapper_tot").prev().val())
				$(this).attr("disabled", "disabled");
		});
		//update tot year
		$("#boeking_datepickerwrapper_tot").prev().find("option").each(function() {
			if(parseInt($(this).attr("value")) < jaarval)
				$(this).attr("disabled", "disabled");
		});
	} else {
		if($(this).val() > $("#boeking_datepickerwrapper_van").prev().val()) {
			$(this).prev().find("option").each(function() {
				$(this).removeAttr("disabled");
			});
		} else {
			var maxmaanval = $("#boeking_datepickerwrapper_van").prev().prev().val();
			$(this).prev().find("option").each(function() {
				if(parseInt($(this).val()) < maxmaanval)
					$(this).attr("disabled", "disabled");
			});
		}
	}
	$(".selectedtd").each(function() {
		$(this).removeClass("selectedtd");
		$(this).find("a").each(function() {
			$(this).removeClass("selected");
		});
	});
	updateBeschikbaarheid();
});
/**
* datepicker: vals for the wrapper below
**/
var pickertobeforced = "";
var datetobeforced = "";
/**
* datepicker: wrapper for the setTimeout to prevent IE from bugging
**/
function forceDateWrapper() {
	if(datetobeforced == null || datetobeforced == '' || pickertobeforced == null || pickertobeforced == '')
		return false;
	else
		forceDate(pickertobeforced, datetobeforced);
}

/**
* datepicker: allows for 2 consecutive force dates
**/
var selecteddate = "";
function secondForceDateWrapper() {
	pickertobeforced = "tot";
	datetobeforced = selecteddate;
	forceDateWrapper();
}

/**
* datepicker: change the month of a specific datepicker to a specific date
**/
function forceDate(type, datestring) {
	var datepicker = $("#boeking_datepickerwrapper_" + type);
	var date = new Date(datestring.split("-")[0], datestring.split("-")[1]-1, datestring.split("-")[2]);
	datepicker.prev().prev().val(date.getMonth() + 1);
	datepicker.prev().prev().find("option").each(function() {
		if($(this).val() == date.getMonth() + 1)
			$(this).attr("selected", "selected");
		else
			$(this).removeAttr("selected");
	});
	
	datepicker.prev().val(date.getMonth() + 1);
	datepicker.prev().find("option").each(function() {
		if($(this).val() == date.getFullYear())
			$(this).attr("selected", "selected");
		else
			$(this).removeAttr("selected");
	});
	
	var month = date.getMonth() + 1;
	if(month < 10)
		month = "0" + month;
		
	var day = date.getDate();
	if(day < 10)
		day = "0" + day;
	
	setTimeout(updateBeschikbaarheid, 0);
	setTimeout(selectDate, 0);
	
}
/**
* datepicker: isArrangement bool
**/
var arrangement = false;

/**
* datepicker: got triggered from forceDate
**/
function selectDate() {
	var type = pickertobeforced;
	var date = new Date(datetobeforced.split("-")[0], datetobeforced.split("-")[1]-1, datetobeforced.split("-")[2]);
	var month = date.getMonth() + 1;
	if(month < 10)
		month = "0" + month;
		
	var day = date.getDate();
	if(day < 10)
		day = "0" + day;
	
	var rel = date.getFullYear() + "-" + month + "-" + day;
	$("#boeking_datepickerwrapper_" + type + " a").each(function() {
		if($(this).attr("rel") == rel) {
			$(this).addClass("selected");
			$(this).parent().addClass("selectedtd");
			
			if(type == 'tot') {
				var prijs = 0;

				var van = $('#boeking_datepickerwrapper_van .selected').attr("rel");
				var tot = $('#boeking_datepickerwrapper_tot .selected').attr("rel");
				
				$.ajax({
					url:"/book/", 
					type: "POST",
					data: "type=prijs&van=" + van + "&tot=" + tot,
					async: false,
					success: function(data) {
						var tmp = data;
						if(tmp.indexOf("arrangement:") == -1) {
							prijs = tmp;
						} else {
							var split = data.split("arrangement:")[1].split("|||");
							arrangement = split[0];
							prijs = split[1];
						}
					}
				});
				var aankomstdatum = van.split("-");
				var vertrekdatum = tot.split("-");
				
				var kamerid = $.getUrlVar('kamer_id');
				
				if(!arrangement)
					if(kamerid==17){
						$("#basisprijs .arm-spacer").html("<table id='prijstable'><tr><td><span>Aankomstdatum:</span> " + aankomstdatum[2] + "-" + aankomstdatum[1] + "-" + aankomstdatum[0] + " </td><td><span>Vertekdatum: </span>" + vertrekdatum[2] + "-" + vertrekdatum[1] + "-" + vertrekdatum[0] + " </td></tr><tr><td><span>Prijs per bed: </span><span class='prijs'>&euro; " + prijs + "</span></td></tr></table>");
					} else {
						$("#basisprijs .arm-spacer").html("<table id='prijstable'><tr><td><span>Aankomstdatum:</span> " + aankomstdatum[2] + "-" + aankomstdatum[1] + "-" + aankomstdatum[0] + " </td><td><span>Vertekdatum: </span>" + vertrekdatum[2] + "-" + vertrekdatum[1] + "-" + vertrekdatum[0] + " </td></tr><tr><td><span>Prijs per kamer: </span><span class='prijs'>&euro; " + prijs + "</span></td></tr></table>");
					}
				else {
					if(arrangement == "1")
						$("#basisprijs .arm-spacer").html("<table id='prijstable'><tr><td><span>Aankomstdatum:</span> " + aankomstdatum[2] + "-" + aankomstdatum[1] + "-" + aankomstdatum[0] + " </td><td><span>Vertekdatum: </span>" + vertrekdatum[2] + "-" + vertrekdatum[1] + "-" + vertrekdatum[0] + " </td></tr><tr><td colspan=\"2\"><span>Prijs per arrangement voor 1 persoon: </span><span class='prijs'>&euro; " + prijs + "</span></td></tr></table>");
					else
						$("#basisprijs .arm-spacer").html("<table id='prijstable'><tr><td><span>Aankomstdatum:</span> " + aankomstdatum[2] + "-" + aankomstdatum[1] + "-" + aankomstdatum[0] + " </td><td><span>Vertekdatum: </span>" + vertrekdatum[2] + "-" + vertrekdatum[1] + "-" + vertrekdatum[0] + " </td></tr><tr><td colspan=\"2\"><span>Prijs per arrangement voor " + arrangement + " personen: </span><span class='prijs'>&euro; " + prijs + "</span></td></tr></table>");
				}
				$("#basisprijs").show();
			}
		} else {
			$(this).removeClass("selected");
			$(this).parent().removeClass("selectedtd");
		}
	});
}

/**
* datepicker: get the beschikbaarheid
**/
function updateBeschikbaarheidDatePicker(datepickerstr) {
	var datepicker = $(datepickerstr).parent();
	var maand = datepicker.find(".datepicker_maand").val();
	if(maand == '')
		return false;
	var jaar = datepicker.find(".datepicker_jaar").val();	
	var maxdate = new Date(jaar, maand-1, 0);
	$.ajax({
		url:"/book/", 
		type: "POST",
		async: false, 
		data: "type=beschikbaarheid&maand=" + jaar + "-" + maand, 
		success: function(data) {
			var arr = data.split('|||'); 
			datepicker.find(".heading th").each(function(i) {
				var newdate = new Date(jaar, maand-1, i+1);
				if(!(i > 20 && newdate.getDate() < 10)) {
					$(this).attr("id", "datepickhead");
					var month = newdate.getMonth() + 1;
					if(month < 10)
						month = "0" + month;
						
					var date = newdate.getDate();
					if(date < 10)
						date = "0" + date;
					$(this).attr("alt", "" + newdate.getFullYear() + "-" + month + "-" + date);
					$(this).html(translateDay(newdate.getDay()) + " " + (i+1));
				} else {
					$(this).attr("id", "");
					$(this).attr("alt", "");
					$(this).html("");
				}
			});
			var currentdate = new Date();
			datepicker.find(".datepickrowitem a").each(function(i) {
				var newdate = new Date(jaar, maand-1, i+1);
				if(!(i > 20 && newdate.getDate() < 10)) {
					var month = newdate.getMonth()+1;
					if(month < 10)
						month = "0" + month;
						
					var date = newdate.getDate();
					if(date < 10)
						date = "0" + date;
					$(this).attr("rel", "" + newdate.getFullYear() + "-" + month + "-" + date);
					var split = arr[i].split("||");
					var tmpdate = new Date(newdate.getFullYear(), month-1, date);
					if(tmpdate.getTime() < (currentdate.getTime() - (60 * 60 * 24))) {
						cleanseObject($(this));
						$(this).addClass("notava");
					} else {
						if(split[1] != 0) {
							cleanseObject($(this));
							$(this).html(split[0]);
						} else {
							cleanseObject($(this));
							$(this).addClass("full");
						}
					}
				} else {
					$(this).attr("rel", "");
					$(this).html("");
				}
			});
		}
	});
}


/**
* datepicker: wrapper for getbeschikbaarheid
**/
function updateBeschikbaarheid() {
	if($(".datepicker_maand").length == 2 && $(".datepicker_jaar").length == 2) {
		updateBeschikbaarheidDatePicker("#boeking_datepickerwrapper_van");
		updateBeschikbaarheidDatePicker("#boeking_datepickerwrapper_tot");
	}
}

/**
* datepicker: get the minimum stay for a room
**/
$('#boeking_datepickerwrapper_van a').live("click", function() {
	if($(this).hasClass("selected")) {
		$(this).removeClass("selected");
		$(this).parent().removeClass("selectedtd");
		$('#boeking_datepickerwrapper_van a').each(function() {
			$(this).removeClass("minimum");
		});
		$('#boeking_datepickerwrapper_tot a').each(function() {
			$(this).removeClass("minimum");
		});
	} else {
		var currentdate = new Date();
		var fromarr = $(this).attr("rel").split("-");
		var fromdate = new Date(fromarr[0], fromarr[1]-1, fromarr[2]);

		if($(this).hasClass("minimum") || $(this).hasClass("full") || (fromdate.getTime() < currentdate.getTime()) || $(this).html() == '') {
			alert("Deze datum kan niet geselecteerd worden.");
			return false;
		}
		var thisval = $(this);
		$.ajax({
			url:"/book/", 
			type: "POST",
			data: "van=" + $(this).attr("rel"), 
			async: false, 
			success: function(data) {
				if(data.indexOf("force:") == -1) {
					var tilldate = new Date(data);
					$('#boeking_datepickerwrapper_tot a').each(function() {
						$(this).removeClass("minimum");
						if(!$(this).hasClass("full")) {
							var arr = $(this).attr("rel").split("-");
							var thisdate = new Date(arr[0], arr[1]-1, arr[2]);
							cleanseObject($(this));
							if(thisdate.getTime() <= fromdate.getTime() || thisdate.getTime() < currentdate.getTime()) {
								$(this).addClass("notava");
							} else if((thisdate.getTime() + (7200000) < tilldate.getTime())) {
								$(this).addClass("minimum");
							}
						}
					});
				} else {
					is_arrangement = true;
					var force = data.split("force:");
					if(force[1] == "no") {
						$('#boeking_datepickerwrapper_van a').each(function() {
							$(this).removeClass("selected");
							$(this).parent().removeClass("selectedtd");
						});
						alert("op een of meerdere dagen is dit arrangement niet beschikbaar");
						return false;
					}
					pickertobeforced = "tot";
					datetobeforced = force[1];
					setTimeout(forceDateWrapper, 0);
				}
			}
		});
		$('#boeking_datepickerwrapper_van a').each(function() {
			$(this).removeClass("selected");
			$(this).parent().removeClass("selectedtd");
		});
		$('#boeking_datepickerwrapper_tot a').each(function() {
			$(this).removeClass("selected");
			$(this).parent().removeClass("selectedtd");
		});
		
		$(this).addClass("selected");
		$(this).parent().addClass("selectedtd");
	}
});

/**
* datepicker: calculate price
**/
$('#boeking_datepickerwrapper_tot a').live("click", function() {
	if($(this).html() == '') {
		alert("Deze datum kan niet geselecteerd worden.");
		return false;
	}
	if($('#boeking_datepickerwrapper_van .selected').length != 0) {
		if(arrangement)
			return;

		var split = $('#boeking_datepickerwrapper_van .selected').attr("rel").split("-");
		var van = new Date(split[0], split[1]-1, split[2]);
		split = $(this).attr("rel").split("-");
		var tot = new Date(split[0], split[1]-1, split[2]);

		var month = parseInt(van.getMonth())+1;
		var day = parseInt(van.getDate());
		if(month < 10)
			month = "" + 0 + month;
		
		if(day < 10)
			day = "" + 0 + day;
			
		var vanstring = van.getFullYear() + "-" + (month) + "-" + day;
		
		month = parseInt(tot.getMonth())+1;
		day = parseInt(tot.getDate());
		if(month < 10)
			month = "" + 0 + month;
		
		if(day < 10)
			day = "" + 0 + day;
		
		
		var totstring = tot.getFullYear() + "-" + (month) + "-" + day;
		
		var stop = false;
		$.ajax({
			url:"/book/", 
			type: "POST",
			data: "type=beschikbaarvoordate&van=" + vanstring + "&tot=" + totstring, 
			success: function(data) {
				if(data == 'false')
					stop = true;
            },
			async:   false
		});
		if(stop) {
			alert("Er zijn op een of meerdere dagen geen kamers meer beschikbaar voor dit type.");
			return;
		}
		
		if(van.getTime() > (tot.getTime() - ( 60 * 60 * 24)) || $(this).hasClass("minimum") || $(this).hasClass("full")) {
			alert("Deze datum kan niet geselecteerd worden.");
			return;
		}
		
		pickertobeforced = "tot";
		datetobeforced = totstring;
		setTimeout(forceDateWrapper, 0);
	}
});

/**
* datepicker: submit
**/
$('#boeking_datepickersubmit').live("click", function() {
	if($('#boeking_datepickerwrapper_van .selected').length != 0 && $('#boeking_datepickerwrapper_tot .selected').length != 0) {
		var van = $('#boeking_datepickerwrapper_van .selected').attr("rel");
		var tot = $('#boeking_datepickerwrapper_tot .selected').attr("rel");
		//var aantal = $('#boeking_aantal').val();
		var aantal = 1;
		$.post('/book/', "van=" + van + "&tot=" + tot + "&aantal=" + aantal, function(data) {
			if(data == 'success')
				window.location = '/book';
			else
				alert(data);
		});
	} else {
		alert("Geen geldige aankomst- en/of vertrekdag geselecteerd.");
	}
});

if($(".prijs").length != 0) {
	var firstprijs = parseFloat($(".prijs").html().substr(2).replace(",","."));
	var prijsnooptions = firstprijs;
}

/**
* persoonlijke info: create the personen warning
**/
$(".personen_select").live("change", function() {
	var nameattr = $(this).attr("name");
	var newval = parseInt($(this).val());
	var kamernaam = $(this).parent().prev().prev().find("label").html();
	var personen = 0;
	$(".personen_select").each(function() {
		personen += parseInt($(this).val());
	});
	if(personen < 2) {
		$.post("/book", "type=getmeerprijs", function(data) {
			data = parseFloat(data);
			if(data == 0)
				return;
			$('.prijs').html("€ " + (firstprijs + data).toFixed(2).replace(".",","));
			$(".personenwarning").html("<p>U heeft minder personen geselecteerd dan het maximum voor dit arrangement. Er is een meerprijs van €" + data.toFixed(2) + " per persoon voor dit arrangement. </p>");
			$(".personenwarning").show("slow");
			prijsnooptions = firstprijs + parseFloat(data);
		});
	} else {
		$('.prijs').html("€ " + (firstprijs.replace(".",",")));
		$(".personenwarning").hide("slow");
		prijsnooptions = firstprijs;
	}
	$(".optionlist select").trigger("change");
});

/**
* persoonlijke info: update prijs with changes in opties
**/
$(".optionlist select").live("change", function() {
	var optieprijs = 0;
	$(".optionlist select").each(function() {
		optieprijs += $(this).attr("alt").replace(",",".") * $(this).val();
	});
	optieprijs = parseFloat(optieprijs);
	var newprijs = (prijsnooptions + optieprijs).toFixed(2).replace(".",",");
	$(".prijs").html("€ " + newprijs);
});
/**
* persoonlijke info: submit
**/
function ucfirst(str) {
    var firstLetter = str.substr(0, 1);
    return firstLetter.toUpperCase() + str.substr(1);
}
$('#boeking_persoonlijksubmit').live("click", function() {
	var aanhef = $("#aanhef").val();
	var voornaam = $("#voornaam").val();
	var achternaam = $("#achternaam").val();
	var email = $("#email").val();
	var bevestigemail = $("#bevestigemail").val();
	var bedrijfsnaam = $("#bedrijfsnaam").val();
	var straatnaam = $("#adres").val();
	var huisnummer = $("#huisnummer").val();
	var postcode = $("#postcode").val();
	var woonplaats = ucfirst($("#plaats").val());
	var land = $("#land").val();
	var telefoonnummer = $("#telefoonnummer").val();
	var opmerking = $("#opmerkingen").val();
	var aankomst = $("#aankomst").val() + ":" + $("#aankomstmin").val();
	var cctype = $("#cctype").val();
	var ccowner = $("#ccnaam").val();
	var ccnummer = $("#ccnummer").val();
	var ccexpire = $("#ccexpire").val();
	var ccexpireyear = $("#ccexpireyear").val();
	var kamerbewonerstr = "";
	$(".kamerbewoner").each(function() {
		kamerbewonerstr += $(this).attr("id") + "||" + $(this).next().val() + "||" + $(this).val() + "|||";
	});
	
	
	//options implode
	var opties = "";
	$(".optionlist select").each(function(index) {
		opties += $(this).attr("rel") + "," + $(this).val() + ";";
	});

	var poststring = "opties=" + opties;
	poststring += "&aanhef=" + aanhef;
	poststring += "&voornaam=" + voornaam;
	poststring += "&achternaam=" + achternaam;
	poststring += "&email=" + email;
	poststring += "&bevestigemail=" + bevestigemail;
	poststring += "&bedrijfsnaam=" + bedrijfsnaam;
	poststring += "&straatnaam=" + straatnaam;
	poststring += "&huisnummer=" + huisnummer;
	poststring += "&postcode=" + postcode;
	poststring += "&woonplaats=" + woonplaats;
	poststring += "&land=" + land;
	poststring += "&telefoonnummer=" + telefoonnummer;
	poststring += "&opmerkingen=" + opmerking;
	poststring += "&ccnummer=" + ccnummer;
	poststring += "&ccexpire=" + ccexpireyear + "-" + ccexpire + "-" + "1";
	poststring += "&cctype=" + cctype;
	poststring += "&ccowner=" + ccowner;
	poststring += "&aankomst=" + aankomst;
	poststring += "&kamerbewoner=" + kamerbewonerstr;
	
	$.post('/book/', poststring, function(data) {
		if(data == "success")
			window.location = '/book';
		else
			alert("" + data);
	});
});

$('#boeking_persoonlijktopsubmit').live("click", function() {
	$('#boeking_persoonlijksubmit').trigger("click");
});


/**
* set the month to the current month
**/
var currentdate = new Date();
$(".datepicker_maand").each(function() {
	$(this).val(currentdate.getMonth()+1);
	$(this).find("option").each(function() {
		if(parseInt($(this).val()) < parseInt(currentdate.getMonth()+1))
			$(this).attr("disabled", "disabled");
	});
});

$('#sidebardatepicker #boeking_till').trigger("change");

/**
* datepicker: boilerplate: checks if dates should be forced
**/
if($(".datepicker_maand").length == 2 && $(".datepicker_jaar").length == 2) {
	$.ajax({
		url:"/book/", 
		type: "POST",
		data: "type=requestdateforce",
		async:false,
		success: function(data) {
			if(data == 'no'){
				setTimeout(updateBeschikbaarheid, 0);
				return false;
			} else {
				pickertobeforced = "van";
				datetobeforced = data.split("|||")[0];
				selecteddate = data.split("|||")[1];
				setTimeout(forceDateWrapper, 0);
				setTimeout(secondForceDateWrapper, 500);
				return false;
			}
		}
	});	
}

/**
* FAQ
**/
$('#faq div').hide();
$('#faq h2').css('cursor','pointer');
$('#faq .sluitknop').css('cursor','pointer');
$('#faq h2').click(function() {
	$(this).next().slideToggle('slow');	
});
$('#faq .sluitknop').click(function() {
	$(this).parent('div').slideUp('slow');
});


/**
* Google Maps
**/
var map;
var gdir;
var geocoder = null;
var addressMarker;
var baseUrl = "http://budgetthostels.nl/";

function initialize() {
	if ($('#map').length) { 
		if(GBrowserIsCompatible()){
			map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(53.215769,6.571439), 15);
			
			gdir = new GDirections(map, document.getElementById("directions"));
			GEvent.addListener(gdir, "error", handleErrors);
			
			map.addControl(new GSmallMapControl());
			
			// Create our "tiny" marker icon
			var tinyIcon = new GIcon();
			tinyIcon.image = "http://budgetthostels.nl/templates/budgetthostels.nl/images/layout/google_marker.png";
			tinyIcon.iconSize = new GSize(37, 34);
			tinyIcon.iconAnchor = new GPoint(18, 17);
			tinyIcon.infoWindowAnchor = new GPoint(50, 0);
			
			// Set up our GMarkerOptions object
			markerOptions = { icon:tinyIcon };
			
			// Locatie Groningen
			var point_groningen = new GLatLng(53.215769,6.571439);
			var marker_groningen = new GMarker(point_groningen, markerOptions);
			map.addOverlay(marker_groningen);
		
		marker_groningen.bindInfoWindowHtml("<strong>Bud Gett Hostels</strong><br/>Rademarkt 3-3A<br />9711CS GRONINGEN");	
			$('#routeForm').submit(function(event){setDirections(); return false;});
		}
	}
}

function setDirections() {
	$('#mapsError').text('');
	$('#mapsError').hide();
	
	gdir.load("from: " + $('#from').val() + " to: " + $('#to').val(),{ "locale": 'nl_NL' });
}

function handleErrors(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {
		$('#mapsError').text("Uw vertrekadres is niet gevonden.");
	} else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
		$('#mapsError').text("Er is een fout opgetreden. Neem contact met ons op en vermeld de volgende foutcode: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
		$('#mapsError').text("Er is een fout opgetreden. Neem contact met ons op en vermeld de volgende fout-code: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_BAD_KEY) {
		$('#mapsError').text("Er is een fout opgetreden. Neem contact met ons op en vermeld de volgende fout-code: " + gdir.getStatus().code);
	} else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
		$('#mapsError').text("Er is een fout opgetreden. Neem contact met ons op en vermeld de volgende fout-code: " + gdir.getStatus().code);
	} else {
		$('#mapsError').text("Er is een fout opgetreden, probeer opnieuw.");
	}
	
	if($('#mapsError').text() != '') {
		$('#mapsError').show();
	}
}

initialize();
