// JavaScript Document

var monate = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];

function GetParam(param) {
	var HTMLScriptElements = document.getElementsByTagName("script");
	for (var i=0; i<HTMLScriptElements.length; i++) {
		var query=HTMLScriptElements[i].src;
		query = query.substr(query.indexOf('?')+1);
		var params=query.split("&");
		for (var j=0 ; j<params.length ; j++){
			var pos = params[j].indexOf("=");
			if(params[j].substring(0, pos)==param) return params[j].substring(pos + 1);
		}
	}

	var query=this.location.search.substring(1);
	if (query.length > 0){
		var params=query.split("&");
		for (var i=0 ; i<params.length ; i++){
			pos = params[i].indexOf("=");
			if(params[i].substring(0, pos)==param) return params[i].substring(pos + 1);
		}
	}
	return false;
}

function SetDisplay(id, param) {
	var el = document.getElementById(id);
	if (GetParam(param)) {
		el.style.display = "inline";
	}else{
		el.style.display = "none";
	}
}

function SetID() {
	var ref = '';
	var el = document.getElementById('hostel_login');
	var hn = GetParam('hostel');
	if (hn) {
		el.value = hn;
		ref = '&hostel=' + hn ;
	}

	el = document.getElementById('hostel_id');
	var id = GetParam('id');
	el.value = id;
	if (id>0) {
		ref = ref + '&id=' + id ;
	}

	var el = document.getElementById('modify');
	el.href = el.href + ref + '&lang='+GetParam('lang');
}

function FillSelect(param, def, feld) {
	var ni = GetParam(param);
	if (!ni) ni = def;
	var el = document.getElementById(feld);
	for (var j = 1; j <= ni; j++) {
		var newOpt = document.createElement("option")
		newOpt.appendChild(document.createTextNode(j));
		var val = document.createAttribute('value');
		val.nodeValue = j;
		newOpt.setAttributeNode(val);
		el.appendChild(newOpt);
	}
}

function Leap(Year){
	if ( (Year % 4) == 0) {
		if ( (Year % 100) == 0){
			Result = ( (Year % 400) == 0);
		}else{
			Result = 1;
		}
	}else{
		Result = 0;
	}
	return (Result);
}

function getNumberofDays1(d) {
	m = d.split("-");
	if(m[0]=="1") {
		if (Leap(m[1])){
			return 29
		}else{
			return 28
		}
	}
	
	if(m[0]=="0" || m[0]=="2" || m[0]=="4" || m[0]=="6" || m[0]=="7" || m[0]=="9" || m[0]=="11") return 31
	return 30;
}

function getNumberofDays() {
	d = new Date();
	return getNumberofDays1(d.getMonth(), d.getFullYear());
}

function SetMonths(feld) {
	if (el = document.getElementById(feld+'_m')) {
		var d = new Date();
		var jahr = d.getFullYear();
		var month = d.getMonth();
		for (var i=0; i<12; i++) {
			var newOpt = document.createElement("option")
			newOpt.appendChild(document.createTextNode(monate[month]+'. '+jahr));
			var val = document.createAttribute('value');
			val.nodeValue = month+'-'+jahr;
			newOpt.setAttributeNode(val);
			el.appendChild(newOpt);
			month++;
			if (month>11) {
				month=0;
				jahr++;
			}
		}
	}
}

function SetDays(feld) {
	if (el = document.getElementById(feld+'_d')) {
		var value = el.value;
		while (el.hasChildNodes()) el.removeChild(el.firstChild);
		var month = document.getElementById(feld+'_m').value;
		var first=1;
		d = new Date();
		if(month==d.getMonth()+'-'+d.getFullYear()) first=d.getDate();
		var last=getNumberofDays1(month);

		for (var j = first; j <= last; j++) {
			var newOpt = document.createElement("option")
			newOpt.appendChild(document.createTextNode(j));
			var val = document.createAttribute('value');
			val.nodeValue = j;
			newOpt.setAttributeNode(val);
			el.appendChild(newOpt);
		}
		el.value = value;
	}
}

function SetDate(d, feld) {
	document.getElementById(feld+'_m').value = d.getMonth()+'-'+d.getFullYear();
	SetDays(feld);
	document.getElementById(feld+'_d').value = d.getDate();
}

function SetDepart() {
	var m = document.getElementById('arrive_m').value;
	m = m.split("-");
	var arr = new Date(m[1],m[0],document.getElementById('arrive_d').value);
	var ni = document.getElementById('noofnights');
	var dep = new Date(arr.valueOf() + 3600 * 24 * 1000 * ni.value);
	SetDate(dep, 'depart')
	SetDays('depart');
}

function calnites() {
	var m = document.getElementById('arrive_m').value;
	m = m.split("-");
	var arr = new Date(m[1],m[0],document.getElementById('arrive_d').value);
	m = document.getElementById('depart_m').value;
	m = m.split("-");
	var dep = new Date(m[1],m[0],document.getElementById('depart_d').value);
	var ni = Math.round((dep-arr) / 1000 / 3600 / 24)

	var inputElement = document.getElementById('noofnights');
	var nn = ni;
	if (ni < 1){
		nn = 1;
	}else{
		 if (ni > maxnights) nn = maxnights;
	}
	
	inputElement.value = nn;
	if (ni < 1 || ni > maxnights) {
		dep = new Date(arr.valueOf() + 3600 * 24 * 1000 * nn);
		SetDate(dep, 'depart');
	}
}

function SetLang() {
	if (GetParam('lang')=='de') {
		document.dormonline.lang.value = 'de';
		monate = ['Jan', 'Feb', 'Mrz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
		var texte =  {
			t_adult:'Personen',
			t_arrive:'Ankunft',
			t_depart:'Abreise',
			t_nights:'Dauer',
			modify:'Buchung &auml;ndern / l&ouml;schen',
			t_find:'Suchen',
			t_mixed:'Gemischt',
			t_male:'M&auml;nner',
			t_female:'Frauen'
		};
		for (var id in texte) {
			el = document.getElementById(id);
			if (el) {
				if (el.innerHTML){
					el.innerHTML = texte[id];
				}else{
					if (el.value) el.value = texte[id];
				}
			}
		}
	}
}

var maxmights;
if(window.addEventListener){
	window.addEventListener('load', function(){
		SetLang();
		SetDisplay('Gender', 'gender')
		SetID();
		FillSelect('maxnights', 14, 'noofnights');
		FillSelect('maxadult', 6, 'personen');
		maxnights = GetParam('maxnights');
		SetMonths('arrive');
		SetMonths('depart');
		SetDays('arrive');
		SetDays('depart');
		calnites();
	}, true);	
}else{
	window.attachEvent('load', function(){
		SetLang();
		SetDisplay('Gender', 'gender')
		SetID();
		FillSelect('maxnights', 14, 'noofnights');
		FillSelect('maxadult', 6, 'personen');
		maxnights = GetParam('maxnights');
		SetMonths('arrive');
		SetMonths('depart');
		SetDays('arrive');
		SetDays('depart');
		calnites();
	});	
}

