
window.onload = initiateForm;

var ageFields;
var first,second,third,fourth,fifth;
var childField;
var occupancyField,durationField;
var minimumDuration;
function initiateForm() {
	ageFields = document.getElementById('ages');
	ageFields.style.display = 'none';
	first = document.getElementById('first');
	second = document.getElementById('second');
	third = document.getElementById('third');
	fourth = document.getElementById('fourth');
	fifth = document.getElementById('fifth');
	childField = document.getElementById('children');
	childField.onkeyup = adjustAgesInput;
	occupancyField = document.getElementById('adults');
	occupancyField.onkeyup = adjustOccupancyInput;
	document.getElementById('bookform').onsubmit = checkForm;
	durationField = document.getElementById('duration');
	if(durationField && durationField.type=="text") durationField.onkeyup = adjustDurationInput;
	if(document.getElementById('mindays')!=null) {
		minimumDuration = parseInt(document.getElementById('mindays').value);
		durationField.onchange = checkDurationLimit;
	}
	focusFirstTextField();
	var rc = document.getElementById('wrc');
	if(rc) {
		if(rc.addEventListener) {
			rc.addEventListener("change",roomchange,false);
		} else if(rc.attachEvent) {
			rc.attachEvent("onclick",roomchange);
		}
	}
	if(document.getElementById('cal')!=null) {
		today = new Date();
		printCalendar('cal',today.getMonth()+1,today.getFullYear(),'datum');
		document.getElementById('calsym').onmouseover = showCalendar;
		document.getElementById('cal').onmouseout = inCalendar;
	}
	init_price();
}

var vanishing = false;
function inCalendar() {
	vanishing = setTimeout("hideCalendar();",2000);
}
function showCalendar() {
	if(vanishing) clearTimeout(vanishing);
	document.getElementById('cal').style.display='block';
}
function hideCalendar() {
	document.getElementById('cal').style.display = 'none';
}

function checkDurationLimit() {
	var suggestedDuration = parseInt(durationField.value);
	if(suggestedDuration<minimumDuration) {
		document.getElementById('minrem').style.color = '#f25549';
	} else {
		document.getElementById('minrem').style.color = '#323036';
	}
}

function adjustDurationInput() {
	var numberOfDays = parseInt(durationField.value);
	if(isNaN(numberOfDays) || numberOfDays==0) {
		durationField.value = '';
		document.getElementById('durinfo').innerHTML = 'Nächte';
		return false;
	} else if(numberOfDays==1) {
		durationField.value = 1;
		document.getElementById('durinfo').innerHTML = 'Nacht';
	} else {
		durationField.value = numberOfDays;
		document.getElementById('durinfo').innerHTML = 'Nächte';
	}
}

function adjustOccupancyInput() {
	var numberOfGuests = parseInt(occupancyField.value);
	if(isNaN(numberOfGuests) || numberOfGuests==0) {
		occupancyField.value = '';
		document.getElementById('aduinfo').innerHTML = 'Personen';
		return false;
	} else if(numberOfGuests==1) {
		occupancyField.value = 1;
		document.getElementById('aduinfo').innerHTML = 'Person';
	} else {
		occupancyField.value = numberOfGuests;
		document.getElementById('aduinfo').innerHTML = 'Personen';
	}
}

function adjustAgesInput() {
	var numberOfChildren = parseInt(childField.value);
	if((isNaN(numberOfChildren)||numberOfChildren>5)&&numberOfChildren!=0) {
		ageFields.style.display = 'none';
		childField.value = '';
		return false;
	} else if(numberOfChildren==0) {
		ageFields.style.display = 'none';
	} else {
		switch(numberOfChildren) {
			case 1: first.style.display = 'inline'; second.style.display = 'none'; third.style.display = 'none'; fourth.style.display = 'none'; fifth.style.display = 'none'; break;
			case 2: first.style.display = 'inline'; second.style.display = 'inline'; third.style.display = 'none'; fourth.style.display = 'none'; fifth.style.display = 'none'; break;
			case 3: first.style.display = 'inline'; second.style.display = 'inline'; third.style.display = 'inline'; fourth.style.display = 'none'; fifth.style.display = 'none'; break;
			case 4: first.style.display = 'inline'; second.style.display = 'inline'; third.style.display = 'inline'; fourth.style.display = 'inline'; fifth.style.display = 'none'; break;
			case 5: first.style.display = 'inline'; second.style.display = 'inline'; third.style.display = 'inline'; fourth.style.display = 'inline'; fifth.style.display = 'inline'; break;
			default: ageFields.style.display = 'none';
		}
		ageFields.style.display = 'inline';
	}
}

function roomchange(e) {
	var rs = document.getElementsByName('room');
	var r = false;
	for(var n=0; n<rs.length; n++) {
		if(rs[n].checked) {
			r = document.getElementById('r'+rs[n].value);
			if(r) r.style.display = 'block';
		} else {
			r = document.getElementById('r'+rs[n].value);
			if(r) r.style.display = 'none';
		}
	}
}

function checkForm() {
	var ok = true;

	var agestest = true;
	var numberOfChildren = parseInt(childField.value);
	var ages = document.getElementById('ages').getElementsByTagName('select');
	for(var i=0; i<ages.length; i++) {
		if(numberOfChildren && isNaN(parseInt(ages[i].value)) && (ages.length-i)<=numberOfChildren) {
			agestest = false;
			ok = false;
			break;
		} 
	}
	if(agestest) document.getElementById('ageserr').style.display='none'; else document.getElementById('ageserr').style.display='inline';

	var inputs = document.getElementsByTagName('input');
	var adrerr = false;
	var numberOfErrors = 0;
	for(var i=0; i<inputs.length; i++) {
		var v = inputs[i].value;
		switch(inputs[i].name) {
			case 'adults':
				if(isNaN(parseInt(v))||v==0) {
					document.getElementById('occuperr').style.display = 'inline';
					if(numberOfErrors==1) inputs[i].focus();
					numberOfErrors++;
					ok = false;
				} else document.getElementById('occuperr').style.display = 'none';
				break;
			case 'duration':
				if(inputs[i].type=="text") {
					if(isNaN(parseInt(v))||v==0) {
						document.getElementById('durerr').style.display = 'inline';
						numberOfErrors++;
						if(numberOfErrors==1) inputs[i].focus();
						ok = false;
					} else document.getElementById('durerr').style.display = 'none';
				}
				break;
			case 'surname':
				if(!v) {
					document.getElementById('snameerr').style.display = 'block';
					numberOfErrors++;
					if(numberOfErrors==1) inputs[i].focus();
					ok = false;
				} else document.getElementById('snameerr').style.display = 'none';
				break;
			case 'givenname':
				if(!v) {
					document.getElementById('fnameerr').style.display = 'block';
					numberOfErrors++;
					if(numberOfErrors==1) inputs[i].focus();
					ok = false;
				} else document.getElementById('fnameerr').style.display = 'none';
				break;
			case 'street':
			case 'area':
				if(!v || adrerr) {
					document.getElementById('adrerr').style.display = 'block';
					if(!v) {
						numberOfErrors++;
						if(numberOfErrors==1) inputs[i].focus();
					}
					adrerr = true;
					ok = false;
				} else document.getElementById('adrerr').style.display = 'none';
				break;
			case 'postalcode':
				var re = /^[0-9 ]+$/;
				if(!re.test(v) || adrerr) {
					document.getElementById('adrerr').style.display = 'block';
					if(!re.test(v)) {
						numberOfErrors++;
						if(numberOfErrors==1) inputs[i].focus();
					}
					adrerr = true;
					ok = false;
				} else document.getElementById('adrerr').style.display = 'none';
				break;
			case 'telephone':
				var re = /^[+0-9 \/-]+$/;
				if(!re.test(v)) {
					document.getElementById('phoneerr').style.display = 'block';
					numberOfErrors++;
					if(numberOfErrors==1) inputs[i].focus();
					ok = false;
				} else document.getElementById('phoneerr').style.display = 'none';
				break;
			case 'email':
				var re = /^[a-z0-9._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
				if(!re.test(v)) {
					document.getElementById('emailerr').style.display = 'block';
					numberOfErrors++;
					if(numberOfErrors==1) inputs[i].focus();
					ok = false;
				} else document.getElementById('emailerr').style.display = 'none';
				break;
		}
	}

	var selectedMonthYear = document.getElementById('arrivalmonthyear');
	if(selectedMonthYear) {
		selectedMonthYear = selectedMonthYear.options[selectedMonthYear.selectedIndex].value;
		var selectedYear = parseInt(selectedMonthYear);
		var selectedMonth =	selectedMonthYear.toString().slice(5);
		var selectedDay = document.getElementById('arrivalday').selectedIndex+1;
		if(dateInPast(selectedDay,selectedMonth,selectedYear)) {
			document.getElementById('daterr').style.display = 'inline';
			ok = false;
		} else document.getElementById('daterr').style.display = 'none';
	}

	var typechoise = document.getElementsByName('bookingtype');
	if(typechoise) {
		var sel = false;
		for(var i=0; i<typechoise.length; i++) {
			if(typechoise[i].checked) sel=true;			
		}
		if(!sel) {
			document.getElementById('typerr').style.display = 'block';
			ok = false;
		} else document.getElementById('typerr').style.display = 'none';
	}

	var roomchoise = document.getElementsByName('room');
	if(roomchoise && roomchoise[0].type=="radio") {
		var sel = false;
		for(var i=0; i<roomchoise.length; i++) {
			if(roomchoise[i].checked) sel=true;			
		}
		if(!sel) {
			document.getElementById('roomerr').style.display = 'block';
			ok = false;
		} else document.getElementById('roomerr').style.display = 'none';
	}

	return ok;
}

function focusFirstTextField() {
	var f = document.getElementsByTagName('input');
	for(var i=0; i<f.length; i++) {
		if(f[i].type=='text') {
			f[i].focus();
			break;
		}
	}
}
