String.prototype.equalsIgnoreCase=MatchIgnoreCase;

var milsInHour = 60*60*1000;
var milsInDay = 24*milsInHour;

function nightcount(startDate, endDate, resultElement)
{
	var usStartDate = UsDate(startDate);
	var usEndDate = UsDate(endDate);
	var startMils = Date.parse(usStartDate);
	var endMils = Date.parse(usEndDate);
	var nights = (endMils-startMils)/milsInDay;
	// March 27 to March 28 is 23 hours(start of sumertime), october vice versa.
	// Therefor we round !!
	if(!isNaN(nights)){
		if (resultElement != null) resultElement.value = Math.round(nights);
	}
}

function checkDatesAndGroups(){
	if(checkGroups()&&checkDates(document.forms[1].startDate,document.forms[1].endDate)){
		return true;
	}

}

function checkGroups(){

	for(r=0; r<resCount; r++) {
		var resChecked = false;
		for(g=0; g<groupCount; g++) {
			var groupNumber = groupArray[g];
			var id = 'reservations[' + r + '].travelGroups[' + groupNumber + ']';
			var groupcheckbox = document.getElementById(id);
			if (groupcheckbox.checked) resChecked = true;
		}
		if (!resChecked) {
			alert("Niet alle reservations zijn aangevinkt!");
			return false;
		}
	}

	for(g=0; g<groupCount; g++) {
		var groupChecked = false;
		var groupNumber = groupArray[g];
		for(r=0; r<resCount; r++) {
			var id = 'reservations[' + r + '].travelGroups[' + groupNumber + ']';
			var groupcheckbox = document.getElementById(id);
			if (groupcheckbox.checked){
				if(groupChecked){
					alert("Een groep mag maar 1 kamer!");
					return false;
					}
				else{
					groupChecked = true;
				}
			}
		}
	}
	return true;
}

function checkDates(dateField1,dateField2){
	if(checkDate(dateField1)&&checkDate(dateField2)){
		return true;
	}
}

function checkDate(dateField){
	if(dateField.value ==''){
		return true;
	}else{
		var usDate = UsDate(dateField.value);
		if(isNaN(Date.parse(usDate))){
	 		dateField.focus();
			window.status = "Datumfout";
		}else{
			return true;
		}
	}
}

function trimString (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function dayCount(startDate, startTime, endDate, endTime, resultElement)
{
	if (document.getElementById('numberOfDays') != null) {
		var usStartDate = '' + UsDate(startDate) + ' ' + startTime;
		var usEndDate = '' + UsDate(endDate) + ' ' + endTime;
		var startMils = Date.parse(usStartDate);
		var endMils = Date.parse(usEndDate);
		var hours = ((endMils-startMils)/milsInHour);
		var nights = '' + (hours/24);
		var wholenights = 0;
		if (nights.indexOf('.') > -1) {
			wholenights = Number(nights.substring(0, nights.indexOf('.'))) + 1;
		}
		else {
			wholenights = nights;
		}
		if (resultElement != null) {
			if(!isNaN(wholenights)){
				resultElement.innerHTML = wholenights;
			}
			else{
				resultElement.innerHTML = ' ';
			}
		}
	}
}

function departuredate(formObj)
{
	var usStartDate = UsDate(formObj.startDate.value);
	var startMils = Date.parse(usStartDate);
	var days = document.getElementById('numberOfNights').value;
	var endMils = startMils + (days*milsInDay);
	var d = new Date();
	d.setTime(endMils);
	var dag = '' + d.getDate();
	if(dag.length == 1) dag = '0'+ dag;
	var maand = d.getMonth() + 1;
	maand = '' + maand;
	if(maand.length == 1) maand = '0'+ maand;
	var datum = (dag + '-' + maand + '-' + d.getFullYear());
	formObj.endDate.value = datum;
	formatDateValue(formObj.endDate, '-');
}

// Predict the EndDate
function predictEndDate(formObj)
{
	if (formObj == null)
		return;
	var startDate = formObj.startDate.value;
	var startMillis = Date.parse(UsDate(startDate));
	var nNights = (nightTransport) ? 1 : 0;
	var endMillis = startMillis + (nNights * milsInDay);
	var endDate = new Date(endMillis);
	formObj.endDate.value = dmy(endDate);
	if (formObj.endTime.value == '') {
		formObj.endTime.value = formObj.startTime.value;
	}
}

function UsDate(date)
{
	syear = date.substr(date.lastIndexOf('-')+1);
	smonth = date.substring(date.indexOf('-')+1, date.lastIndexOf('-'));
	sday = date.substring(0, date.indexOf('-'));
	return (smonth + '/' + sday + '/' + syear);
}


function MatchIgnoreCase(strTerm)
{
	if (strTerm == null) return false;
	return (this.toLowerCase() == strTerm.toLowerCase());
}

function formatTimeValue(field, separator)
{
	if (field == null) return;
	var txt = '' + field.value;
	var rex = /^([0-2][0-9])[\.:]?([0-5][0-9])$/;
	if (txt.search(rex) != -1) {
		field.value = txt.replace(rex, '$1:$2');
	}
}

function formatDateValue(field, separator)
{
	if (field == null) return;
	var txt = '' + field.value;
	var rex = /^(0[1-9]|[12][0-9]|3[01]).(0[1-9]|1[0-2]).(2\d{3})$/;
	if (txt.search(rex) != -1) {
		field.value = txt.replace(rex, '$1' + separator + '$2' + separator + '$3');
	}
}

function dmy(dateValue)
{
	if (dateValue == null) dateValue = new Date();
	var d = dateValue.getDate();
	var m = dateValue.getMonth() + 1;
	var y = dateValue.getFullYear();
	var s = '';
	if (d < 10) s += '0';
	s += d + '-';
	if (m < 10) s += '0';
	s += m + '-' + y;
	return s;
}

function pad2(x)
{
	if (typeof x == 'string') {
		try { var y = parseInt(x, 10); } catch(e) {}
		if (isNaN(y)) {
			// Dont know how to handle this
			return x;
		}
		x = y;
	}
	if (typeof x != 'number') {
		return x;
	}
	var zero = (x >= 0 && x <= 9) ? '0' : '';
	return zero + x;
}

function addOnLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

