
//********************************************************************************
//****ROOM TYPE CHECK****
//********************************************************************************

gaRoomTypeVal = new Array("SGL","TWN","TWNC","DBL","DBLC","TRI","QAD","FPL","FPLC","TRIC")
gaRoomTypeValAmend = new Array("Sroom","TWroom","TWCroom","Droom","DCroom","Troom","Qroom","FPLroom")
gaRoomOccupancy=new Array(1,2,3,2,3,3,4,4,5,4)
gaChildRate = new Array(0,0,3,0,3,0,0,4,4,4)
gaChildField = new Array(0,0,1,0,1,0,0,2,3,1)
var gchildRate=4,gChildRateReq=0;
gRoomCount = 9;
gNameRoot = "document.form1.";
gSelectedRoomCount=0;
function validateRoomType(obj,number)
{
	var roomSelected = getSelectionValue(obj);
	var roomCountField=getRoomCountField(number);
	getTotalRoomCount(roomSelected,roomCountField);
	
	gChildRate=isChildRate(roomSelected);
	if 	(gChildRate>0)
	{	gChildRateReq=getChildAgeReq(roomSelected);
		return chkChildAge( number,getSelectionValue(roomCountField),gChildRate,gChildRateReq )
	}
	return true;
}

function validateRoomTypeAmend(obj,roomType,number)
{
	var roomSelectedCount = getSelectionValue(obj);
	getTotalRoomCountAmend(roomSelectedCount,roomType);
	
	gChildRate=isChildRateAmend(roomType);
	if 	(gChildRate>0)
	{	gChildRateReq=getChildAgeReqAmend(roomType);
		return chkChildAge( number,roomSelectedCount,gChildRate,gChildRateReq )
	}
	return true;
}
function getTotalRoomCount(roomType,roomCountField)
{
	var occupancyCount	=	getRoomCount(roomType);
	var roomCount		=	getSelectionValue(roomCountField)
	gSelectedRoomCount=gSelectedRoomCount+(occupancyCount * roomCount);
	
}

function getTotalRoomCountAmend(roomSelectedCount,roomType)
{	
	var occupancyCount	=	getRoomCountAmend(roomType);
	
	gSelectedRoomCount=gSelectedRoomCount+(occupancyCount * roomSelectedCount);
}
function isValidBooking()
{	
	if ( gSelectedRoomCount>gRoomCount )
		return false;
	else
		return true;
}
function chkChildAge(number,numRooms,numChildRates,numChildAgeReq) {
	
	for (var i=1;i<=numChildRates;i++)
	{
		var field=getRoomAgeField(number,i);
		if (i<=(numRooms*numChildAgeReq)) {
			if ( (getSelectionValue(field)=='')||(getSelectionValue(field)==null) )
			{	return false;
				break;}
		} 
	}	
	return true;
}
function alertMessage(room)
{
	alert("Room "+room+" : Please enter all child ages")
}
function chgRoomNumber(obj,number) {
	var oRoom = getRoomTypeField(number);
	if (obj.selectedIndex==0)
		{oRoom.selectedIndex = 0;}
	chgRoomType(oRoom,number)
}
function chgRoomType(obj,number) {	
	var roomSelected = getSelectionValue(obj);
	var roomCountField=getRoomCountField(number);	
	
	if (roomSelected!='') {
		if (roomCountField.length==0)
			setRoomCountValue(roomCountField);
		if (getSelectionValue(roomCountField)=='0') {			
			setSelectionValue(roomCountField,'1');
		}
		gChildRate=isChildRate(roomSelected);		
	} 
	else {
		//setSelectionValue(roomCountField,'0');
		setSelectionValue(roomCountField,'');		
	}
	
	if ( (roomSelected!='')&&(gChildRate>0) )
		{	gChildRateReq=getChildAgeReq(roomSelected);
			showAges(number,getSelectionValue(roomCountField),gChildRate,gChildRateReq);		
		}
	else
		 { showAges(number,0,3,1); }	
}

function chgRoomTypeAmend(obj,number,roomSelected) {	
	//var roomSelected = getSelectionValue(obj);
	var roomCountField=getRoomCountField(number);
	
	if (roomSelected!='') {
		gChildRate=isChildRateAmend(roomSelected);				
	} 
	else {
		//setSelectionValue(roomCountField,'0');
		//setSelectionValue(roomCountField,'');		
	}
	
	if ( (roomSelected!='')&&(gChildRate>0) )
		{	gChildRateReq=getChildAgeReqAmend(roomSelected);
			
			 showAgesAmend(number,getSelectionValue(roomCountField),gChildRate,gChildRateReq)	}
	else
		{showAgesAmend(number,0,3,1);
		}	
		
}

function getRoomTypeField(roomNumber) {
	
	return eval(gNameRoot+"roomType"+roomNumber);
}

function getSelectionValue(obj)
{
	if (obj && obj.selectedIndex >= 0) {
		return obj.options[obj.selectedIndex].value;
	}
	return '';
}
function getRoomCountField(roomNumber) {
	var field="numRooms"+roomNumber;
	return eval(gNameRoot+field);
}
function setRoomCountValue(obj)
{
	obj.options[0]=new Option('','0')
	for (i=1;i<=gRoomCount;i++)
	{	
		obj.options[i]=new Option(i,i)
	}
}
function setSelectionValue(obj,value) {
	if (!obj) return;
	if ((value!=null)&&(value!='')) {
		if (value.length>0) {
			obj.selectedIndex= getIndexOfOption(obj, value);
		} else {
			obj.selectedIndex= -1;			
		}
	}
	else
		obj.length=0;		
}
function getIndexOfOption(obj, value) {
	if (obj.options) {
		for (var idx= 0; idx< obj.options.length; idx++) {
			if (obj.options[idx].value== value)
				return idx;
		}
	}
	return -1;
}
function isChildRate(roomType)
{
	for (var i=0;i<gaRoomTypeVal.length;i++)
	{	//if (roomType.match(gaRoomTypeVal[i]))
		if (roomType==gaRoomTypeVal[i])
		{	
			return gaChildRate[i];			
		}
	} 
}

function isChildRateAmend(roomType)
{	
	for (var i=0;i<gaRoomTypeValAmend.length;i++)
	{	//if (roomType.match(gaRoomTypeVal[i]))		
		if (roomType==gaRoomTypeValAmend[i])
		{	
			return gaChildRate[i];			
		}
	} 
}
function getChildAgeReq(roomType)
{	
	for (var i=0;i<gaRoomTypeVal.length;i++)
	{	
		if (roomType==gaRoomTypeVal[i])
		{	
			return gaChildField[i];			
		}
	} 
}
function getChildAgeReqAmend(roomType)
{
	for (var i=0;i<gaRoomTypeValAmend.length;i++)
	{	
		if (roomType==gaRoomTypeValAmend[i])
		{	
			return gaChildField[i];			
		}
	} 
}
function getRoomCount(roomType)
{
	for (var i=0;i<gaRoomTypeVal.length;i++)
	{	
		if (roomType==gaRoomTypeVal[i])
		{	
			return gaRoomOccupancy[i];
		}
	} 
}
function getRoomCountAmend(roomType)
{
	for (var i=0;i<gaRoomTypeValAmend.length;i++)
	{	
		if (roomType==gaRoomTypeValAmend[i])
		{	
			return gaRoomOccupancy[i];
		}
	} 
}
function getRoomAgeField(roomNumber,ageNumber) {
	var field="roomType"+roomNumber+"Age"+ageNumber;
	return eval(gNameRoot+field);
} 

function getRoomTableField(roomNumber) {
	var field="blkchild"+roomNumber;
	return eval("document.all."+field);
}


function showAges(number,numRooms,numChildRates,numChildAgeReq) {
	//alert("room number : " + number)
	//alert("number of rooms : " + numRooms)
	//alert("child rates : " + numChildRates)
	//alert("child rates required : " + numChildAgeReq)
	for (var i=1;i<=numChildRates;i++)
	{
		var field=getRoomAgeField(number,i);
		if (i<=(numRooms*numChildAgeReq)) {
				if (eval(field))
					{showField(field.name,true);}
		} else {
			if (eval(field))
				{
				showField(field.name,false);
				field.selectedIndex= 0;
				}
		}
	}	
}

function showAgesAmend(number,numRooms,numChildRates,numChildAgeReq) {
	
	for (var i=1;i<=numChildRates;i++)
	{
		var field=getRoomAgeField(number,i);
		var objtable=getRoomTableField(number,i);
		if (i<=(numRooms*numChildAgeReq)) {
			if (field!=null)showFieldAmend(field.name,objtable,true);
		} else {
			if (field!=null)
			{showFieldAmend(field.name,objtable,false);
			field.selectedIndex= 0;}
		}
	}	
}
function showField(field,show) {
	var obj=getLayer(field);
	if (!obj) return;
	if (obj.style) {
		obj.style.visibility=show ? "visible" : "hidden";
	} else {
		obj.visibility=show ? "show" : "hide";
	}
}
function showFieldAmend(field,objtable,show) {
	
	var obj=getLayer(field);	
	if (!obj) return;
	if (obj.style) {
		document.all.blkchild0.style.display='block';
		objtable.style.display = 'block';
		obj.style.visibility=show ? "visible" : "hidden";
	} else {
		objtable.style.display = 'none';
		obj.visibility=show ? "show" : "hide";
	}
}
function getLayer(layer) {
	if (document.all)
		return eval('document.all.'+layer);
	if (document.getElementById)
		return document.getElementById(layer);
	return eval('document.'+layer);
}
//********************************************************************************


//********************************************************************************
//****CHECK OUT DATE CALCULATION****
//********************************************************************************
function calCheckOutDate(validDate,numDays)
{	//------------------------
	var dateString = cvtDateToISO(validDate)
	//var checkOut = FormatDate(AddDaysToDate(dateString, numDays))
	return cvtISOToDate(FormatDate(AddDaysToDate(dateString, numDays)))
	//------------------------	
}

function cvtDateToISO(DateString)
{	
	var aDate = DateString.split('/')
	aDate[0] = chkISONumber(aDate[0])
	aDate[1] = chkISONumber(aDate[1])
	return (aDate[2]+'/'+aDate[1]+'/'+aDate[0])
	
}
function cvtISOToDate(DateString)
{
	var aDate = DateString.split('/')
	aDate[1] = chkDateNumber(aDate[1])
	aDate[2] = chkDateNumber(aDate[2])
	return (aDate[2]+'/'+aDate[1]+'/'+aDate[0])
}
function chkISONumber(num)
{	
	return ((num< 9) ? "0"+parseInt(num,10) : num)
}
function chkDateNumber(num)
{	
	return ((num< 9) ? "0"+parseInt(num,10) : num)
}
function AddDaysToDate(DateString, Days)
{
    DateObject = new Date(DateString);
    return(new Date(DateObject.getTime() + Days * 24 * 60 * 60 * 1000));
}

function FormatDate(DateString)
{
    DateObject = new Date(DateString);
    return(DateObject.getFullYear() + "/" + ((DateObject.getMonth() < 9) ? "0" : "") + (DateObject.getMonth() + 1) + "/" + DateObject.getDate());
}

//********************************************************************************
