function validateForm() {
	var error = "";
	var obj = document.frmBooking;
	if (obj.txtCompany.value == "") error += "\n- Name";
	if (validateEmail(obj.txtEmail.value) == false) error += "\n- E-mail Address";
	if (isNumeric(obj.txtCountryCode.value) == false || isNumeric(obj.txtTelephone.value) == false) error += "\n- Contact Number";
	if (obj.checkInDate.value.length!=11) error += "\n- Departure Date";
	calculateNights();
	if (obj.checkOutDate.value.length!=11 || numOfNights < 1) error += "\n- Return Date";
	if (completeTraveler() == false) error += "\n- Individual Guest Information";
	
	if (error != "") {
		alert("Incomplete or invalid information:" + error);
		return false;
	} else {
		document.frmBooking.submit();
	}
}

var lang = "en";
var numOfRoom = 1;
var numOfTraveler = 2;
var numOfNights = 0;

function updateRoom() {
	numOfRoom = parseInt(document.getElementById("selRoomNumber").value);
	for (i=2; i<=6; i++) document.getElementById("room" + i).style.display = "none";
	for (i=2; i<=numOfRoom; i++) document.getElementById("room" + i).style.display = "block";
	updateTraveler();
}

function updateTraveler() {
	numOfTraveler = 0;
	for (i=1; i<=numOfRoom; i++) numOfTraveler += parseInt(document.getElementById("selGuestNumber" + i).value);
	document.getElementById("hdnGuestNumber").value = numOfTraveler;
	for (i=1; i<=18; i++) document.getElementById("traveler" + i).style.display = "none";
	for (i=1; i<=numOfTraveler; i++) document.getElementById("traveler" + i).style.display = "inline";
}

function completeTraveler() {
	for (i=1; i<=numOfTraveler; i++) {
		if (document.getElementById("selTitle" + i).value == "" ||
			document.getElementById("txtFName" + i).value == "" ||
			document.getElementById("txtLName" + i).value == "" ||
			document.getElementById("selBirthDay" + i).value == "" ||
			document.getElementById("selBirthMonth" + i).value == "" ||
			document.getElementById("selBirthYear" + i).value == "" ||
			document.getElementById("txtPassport" + i).value == "" ||
			document.getElementById("selExpiryYear" + i).value == "" ||
			document.getElementById("selExpiryMonth" + i).value == "" ||
			document.getElementById("selExpiryDay" + i).value == "") return false;
	}
	return true;
}

function writeDD(ID) {
	document.write('<select name="' + ID + '" id="' + ID + '">');
	document.write('<option value="" selected>DD</option>');
	for (i=1; i<=31; i++) document.write('<option value="' + i + '">' + i + '</option>');
	document.write('</select>');
}

MM = new Array("", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

function writeMM(ID) {
	document.write('<select name="' + ID + '" id="' + ID + '">');
	document.write('<option value="" selected>MM</option>');
	for (i=1; i<=12; i++) document.write('<option value="' + MM[i] + '">' + i + '</option>');
	document.write('</select>');
}

function writeYYA(ID) {
	document.write('<select name="' + ID + '" id="' + ID + '">');
	document.write('<option value="" selected>YYYY</option>');
	for (i=2009; i<=2029; i++) document.write('<option value="' + i + '">' + i + '</option>');
	document.write('</select>');
}

function writeYYB(ID) {
	document.write('<select name="' + ID + '" id="' + ID + '">');
	document.write('<option value="" selected>YYYY</option>');
	for (i=2009; i>=1900; i--) document.write('<option value="' + i + '">' + i + '</option>');
	document.write('</select>');
}

function calculateNights() {
	if (document.getElementById("checkInDate").value.length!=11 || document.getElementById("checkOutDate").value.length!=11) return false;
	var checkInDate = document.getElementById("checkInDate").value;
	var checkOutDate = document.getElementById("checkOutDate").value;
	var check_in_month;
	var check_out_month;
	switch (checkInDate.substr(3,3)) {
		case "Jan": check_in_month=0;break; case "Feb": check_in_month=1;break; case "Mar": check_in_month=2;break;
		case "Apr": check_in_month=3;break; case "May": check_in_month=4;break; case "Jun": check_in_month=5;break;
		case "Jul": check_in_month=6;break; case "Aug": check_in_month=7;break; case "Sep": check_in_month=8;break;
		case "Oct": check_in_month=9;break; case "Nov": check_in_month=10;break; case "Dec": check_in_month=11;break;
	}
	switch (checkOutDate.substr(3,3)) {
		case "Jan": check_out_month=0;break; case "Feb": check_out_month=1;break; case "Mar": check_out_month=2;break;
		case "Apr": check_out_month=3;break; case "May": check_out_month=4;break; case "Jun": check_out_month=5;break;
		case "Jul": check_out_month=6;break; case "Aug": check_out_month=7;break; case "Sep": check_out_month=8;break;
		case "Oct": check_out_month=9;break; case "Nov": check_out_month=10;break; case "Dec": check_out_month=11;break;
	}
	
	date1 = new Date();
	date2 = new Date();
	diff  = new Date();
	date1temp = new Date(check_in_month+"/"+checkInDate.substr(0,2)+"/"+checkInDate.substr(7,4) + " 00:00:01");
	date1.setTime(date1temp.getTime());
	date2temp = new Date(check_out_month+"/"+checkOutDate.substr(0,2)+"/"+checkOutDate.substr(7,4) + " 00:00:01");
	date2.setTime(date2temp.getTime());
	//diff.setTime(Math.abs(date2.getTime() - date1.getTime()));
	diff.setTime(date2.getTime() - date1.getTime());
	timediff = diff.getTime();
	numOfNights = Math.floor(timediff / (1000 * 60 * 60 * 24));
	document.getElementById("hdnNightNumber").value = numOfNights;
}

function updateHotelChoice() {
	for (i=2; i<=30; i++) document.getElementById("hotel" + i).style.display = "none";
	if (document.getElementById("chkAddOnsen").checked) {
		calculateNights();
		if (numOfNights>1 && numOfNights<31) {
			for (i=2; i<=numOfNights; i++) {
				document.getElementById("hotel" + i).style.display = "block";
				if (document.getElementById("selHotel").value != "") {
					document.getElementById("selHotel" + i).options[document.getElementById("selHotel").selectedIndex].selected = true;
				} else {
					document.getElementById("selHotel" + i).options[0].selected = true;
				}
			}
		} else {
			alert("Please select Departure Date and Return Date correctly.");
			document.getElementById("chkAddOnsen").checked = false;
		}
	}
}

function validateEmail(email)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(email)) {
		return true;
	} else {
		return false;
	}
}

function toInteger(n) {
	return (n < 0 ? - 1 : + 1) * Math.floor(Math.abs(n) + 0.5);
}

function isNumeric(n) {
	var validChars = "0123456789";
	var isNumber=true;
	var char;

	if (n == "") isNumber = false;
	for (i = 0; i < n.length && isNumber == true; i++) { 
		char = n.charAt(i); 
		if (validChars.indexOf(char) == -1) isNumber = false;
	}
	return isNumber;
}

