// JavaScript Document

var arrDay = document.idForm.arrDay;
var arrMth = document.idForm.arrMth;
var arrYear = document.idForm.arrYear;

var depDay = document.idForm.depDay;
var depMth = document.idForm.depMth;
var depYear = document.idForm.depYear;

var numRooms = document.idForm.prsRoomCount;
var numAdult = document.idForm.occupancy;
var numChildren = document.idForm.prsNumChildren;

var arrDate = document.idForm.calArrivalDateField;
var depDate = document.idForm.calDepartureDateField;

var oTable = document.getElementById("childTable");
var pTable = document.getElementById("childAgeTable");

/* Keep track of all child and child age values */
var arrChildNum = new Array(4);
var arrChildAge = new Array(8);

function begin() {
	var date = new Date();
	var daysInMth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	var mthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
	
	/* Populate the select fields */
	for (x=1; x<=31; x++) {
		arrDay[arrDay.length] = new Option(x, x);
		depDay[depDay.length] = new Option(x, x);
	}
	
	for (x=0; x<=11; x++) {
		arrMth[arrMth.length] = new Option(mthNames[x], x+1);
		depMth[depMth.length] = new Option(mthNames[x], x+1);
	}
	
	for (x=date.getFullYear(); x<=date.getFullYear()+1; x++) {
		arrYear[arrYear.length] = new Option(x, x);
		depYear[depYear.length] = new Option(x, x);
	}
	/* Populate Rooms field */
	for (x=1; x<=4; x++) {
		numRooms[numRooms.length] = new Option(x, x);
	}
	/* Populate Adult field */
	for (x=1; x<=3; x++) {	
		numAdult[numAdult.length] = new Option(x, x);	
	}

	/* Set Check-In date to current date */
	arrDay.selectedIndex = date.getDate()-1;
	arrMth.selectedIndex = date.getMonth();

}

function updateDeparture() {
	var chkArrDay = arrDay[arrDay.selectedIndex].value;
	var chkArrMth = arrMth[arrMth.selectedIndex].value;
	var chkArrYear = arrYear[arrYear.selectedIndex].value;
	
	var arrDate = new Date(chkArrYear, chkArrMth, chkArrDay);
	var depDate = new Date();
	/* add 3 days to the arrival date */
	depDate.setDate(arrDate.getDate()+3);
	
	depDay.selectedIndex = depDate.getDate()-1;
	depMth.selectedIndex = depDate.getMonth();
}

/* Function to update # of children per adult per room */
function updateChildCount() {
	for(x=1; x<=4; x++) {
		var childRoomId = document.getElementById("childRoom"+x);
		var childRoomIdAge1 = document.getElementById("prsRoom"+x+"Child1");
		var childRoomIdAge2 = document.getElementById("prsRoom"+x+"Child2");
		childRoomId.style.display = "none";
		childRoomIdAge1.style.visibility = "hidden";
		childRoomIdAge2.style.visibility = "hidden";
	}
	
	document.getElementById("childAgeTableDiv").style.display = "none";
	
	if(numAdult[numAdult.selectedIndex].value > 1) {
		document.getElementById("childTableDiv").style.display = "block";
	} else {
		document.getElementById("childTableDiv").style.display = "none";
	}
	
	for(x=1; x<=numRooms[numRooms.selectedIndex].value; x++) {
		var childRoomId = document.getElementById("childRoom"+x);
		var childRoomSelectId = document.getElementById("prsNumChildren"+x);

		if(numAdult[numAdult.selectedIndex].value > 1) {
			// Display child rows according to # of rooms
				/* If child is more than adult, clear options */
				if (childRoomSelectId.length > numAdult[numAdult.selectedIndex].value) {
					childRoomSelectId.length = 0;
				}
				/* Populate Child field if less then number of adults */
				if (childRoomSelectId.length < numAdult[numAdult.selectedIndex].value) {
					childRoomSelectId.length = 0;
					for (y=0; y<numAdult[numAdult.selectedIndex].value; y++) {
							childRoomSelectId[childRoomSelectId.length] = new Option(y, y);
					}	
				}
			childRoomId.style.display = "block";
			document.getElementById("childAgeTableDiv").style.display = "inline";
			
			/* If there is a value in the child num array, show it */
			if (arrChildNum[x-1] != null) {
				if(childRoomSelectId.length > arrChildNum[x-1]) {
					childRoomSelectId.selectedIndex = arrChildNum[x-1];
				} else {
					childRoomSelectId.selectedIndex = arrChildNum[x-1]-1;
					arrChildNum[x-1] = childRoomSelectId.selectedIndex;
				}
			}
			
			for (z=1; z<=arrChildNum[x-1]; z++) {
				document.getElementById("prsRoom"+x+"Child"+z).style.visibility = "visible";				
			}
		}
	}
}

/* Function to add # of child age per child */
function updateNumChild(childRow) {
	//document.getElementById("childAgeTableDiv").style.display = "none";
	var rowNumber = parseInt(childRow.id.substr(childRow.id.length-1));
	
	/* add the index of the value to the array */
	arrChildNum[rowNumber-1] = childRow.selectedIndex;


	/* Hide all select boxes first */
	for (x=1; x<=2; x++) {
		var currentBox = document.getElementById("prsRoom"+rowNumber+"Child"+x);
		currentBox.style.visibility = "hidden";
		
		/* Clear child age field */
		currentBox.length = 0;
	}

	if (childRow.value > 0) {
		//document.getElementById("childAgeTableDiv").style.display = "inline";
		
		/* Show the required number of select boxes */
		for (x=1; x<=childRow.value; x++) {
			var currentBox = document.getElementById("prsRoom"+rowNumber+"Child"+x);
			currentBox.style.visibility = "visible";
			
			/* Populate child age field */
			currentBox[currentBox.length] = new Option("<1", "0");
			for (y=1; y<=12; y++) {	
				currentBox[currentBox.length] = new Option(y, y);
			}
			
			// get the array number
			var arrayNum = 0;
			if (rowNumber == 1)
				arrayNumber = parseInt(x) - rowNumber;
			if (rowNumber == 2)
				arrayNumber = (parseInt(x) + rowNumber)-1;
			if (rowNumber == 3)
				arrayNumber = parseInt(x) + rowNumber;			
			if (rowNumber == 4)
				arrayNumber = (parseInt(x) + rowNumber)+1;		
			
			/* If there is a value in the child age array, show it */
			if (arrChildAge[arrayNumber] != null) {
					//document.getElementById("childAgeTableDiv").style.display = "inline";
					currentBox.selectedIndex = arrChildAge[arrayNumber];
			}			
		}
	}
}

function updateChildAge(childAge) {
		var rowNumber = parseInt(childAge.id.substr(7,1));
		var selectNumber = parseInt(childAge.id.substr(childAge.id.length-1));
		var arrayNumber = 0;
		
		if (rowNumber == 1)
			arrayNumber = selectNumber - rowNumber;
		if (rowNumber == 2)
			arrayNumber = (selectNumber + rowNumber)-1;
		if (rowNumber == 3)
			arrayNumber = selectNumber + rowNumber;			
		if (rowNumber == 4)
			arrayNumber = (selectNumber + rowNumber)+1;
	
		/* add the index of the value to the array */
		arrChildAge[arrayNumber] = childAge.selectedIndex;
		//alert("array number "+ arrayNumber +" has value of "+arrChildAge[arrayNumber]);
}

function submitForm(clickType) {
	var returnVal = true;
	
	if (clickType=="modify") {
		document.idForm.quick.value = "modifyCancel";
	} else {
		document.idForm.quick.value = "quick";
		
		/* Subtract 1 from month for javascript functions */
		var chkArrDay = arrDay[arrDay.selectedIndex].value;
		var chkArrMth = arrMth[arrMth.selectedIndex].value-1;
		var chkArrYear = arrYear[arrYear.selectedIndex].value;		

		var chkDepDay = depDay[depDay.selectedIndex].value;
		var chkDepMth = depMth[depMth.selectedIndex].value-1;
		var chkDepYear = depYear[depYear.selectedIndex].value;		

		chkArrDate = new Date(chkArrYear, chkArrMth, chkArrDay);
		chkDepDate = new Date(chkDepYear, chkDepMth, chkDepDay);
		
		if((chkArrYear != chkArrDate.getFullYear()) || (chkArrMth != chkArrDate.getMonth()) || (chkArrDay != chkArrDate.getDate())) {
			alert("There is an error in your check-in date");
			returnVal = false;
		} else if((chkDepYear != chkDepDate.getFullYear()) || (chkDepMth != chkDepDate.getMonth()) || (chkDepDay != chkDepDate.getDate())) {
			alert("There is an error in your check-out date");
			returnVal = false;
		} else if(chkDepDate < chkArrDate) {
			alert("Your check-out date is earlier than your check-in date.");
			returnVal = false;
		}
	}	
	
	/* Add 1 to month before submit */
	
	chkArrMth = chkArrMth + 1;
	chkDepMth = chkDepMth + 1;
	
	arrDate.value = chkArrDay + "-" + chkArrMth + "-" + chkArrYear;
	depDate.value = chkDepDay + "-" + chkDepMth + "-" + chkDepYear;

	return returnVal;
}

function takeYear(theDate) {
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}

function checkChildNum() {
	for (x=0; x<arrChildAge.length; x++)
		alert(arrChildAge[x]);
}

begin();
updateDeparture();