<!--
// Functions for initialising and updating booking form

var stayLen=2;
var daysofmonth   = new makeArray(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var	oneDay = 24*60*60*1000; // 24hrs * 60 mins * 60 secs * 1000 ms

var weekday = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

var maxrooms=4;
var maxadults=4;
var maxchildren=2;
var maxchildage=12;
var default_numadults = 2;
var default_numchildren = 0;
var default_numrooms = 1;
var roomsArray = new Array(default_numrooms);
var roomtype_options = new Array();
roomtype_options[1] = new Array("S","TSU");
roomtype_options[2] = new Array("TW","DB");
var roomtype_option_labels = new Array();
roomtype_option_labels['S'] = "Single";
roomtype_option_labels['TSU'] = "Twin (Sole Use)";
roomtype_option_labels['TW'] = "Twin";
roomtype_option_labels['DB'] = "Double";

var roomTypeDDs = new Array('singleAmount', 'twinAmount', 'tripleAmount', 'quadAmount');



function addNewRoom(roomsArr) {
  var i = (arguments.length>1) ? arguments[1] : 1;
	while (i>0) {
		var numRooms = roomsArr.length;
		roomsArr[numRooms] = createRoom();
		i--;
		}
	return roomsArr;
	}



function appendUserDetailVals(userFrm, datesFrm)
{
	var elemObj, hiddenObj;
	for (var i=0; i<userFrm.elements.length; i++)
	{
		elemObj = userFrm.elements.item(i);
		if ((elemObj.type!='radio') || ((elemObj.type=='radio') && elemObj.checked))
		{
			hiddenObj = document.createElement('input');
			hiddenObj.setAttribute('type', 'hidden');
			hiddenObj.setAttribute('name', elemObj.name);
			hiddenObj.setAttribute('value', elemObj.value);
			datesFrm.appendChild(hiddenObj);
		}
	}
}



function chooseGroupForm(frmObj)
{
	var numRooms = frmObj.numrooms.value;
	if (numRooms == 0)
	{
		return ((frmObj.quadAmount.value > 1) || (frmObj.totalRooms.value > maxrooms));
	}
	var numAdults;
	var numQuads = 0;
	for (var i=0; i<numRooms; i++)
	{
		objPrefix = 'room_' + i + '_';
		eval ('numAdults = frmObj.' + objPrefix + 'numadults.value;');
		if (numAdults == 4)
		{
			numQuads++;
		}
	}
	return (numQuads > 1);
}



function clearDownRoomsDD(frmObj)
{
	var nr = frmObj.numrooms;
	for (var i=0; i<= (2*nr.options.length); i++)
	{
		nr.remove(0);
	}
	formRooms(frmObj, 'roomDetail', new Array(), 0);
}



function createChildAgeDDs(index) {
  var childCount = roomsArray[index]['numchildren'];
	if (childCount > 0) {
	  var selHtml = '';
		for (childNum=0;childNum<childCount;childNum++) {
			var objName = 'room_' + String(index) + '_childage_' + String(childNum);
		  selHtml += '<div class="roomSeg" style="border:none"><div class="roomItem">Child Age: </div>' +
			           '<div class="roomItem" style="float:right"><select name="' + objName +
								 '" onChange="roomsArray[' + String(index) +
								 '][\'childages\'][' + childNum + ']=this.value;"></select></div></div>';
			}
		return selHtml;
		}
	else {
		return '';
		}
	}



function createRoom() {
	var room = new Array();
	room['numadults'] = default_numadults;
	room['numchildren'] = default_numchildren;
	room['type'] = roomtype_options[default_numadults][0];
	room['childages'] = new Array(0);
	return room;
	}



function changeHtmlContent(elementid,content){
  if (document.all) {
	  document.getElementById(elementid).innerHTML = content;
		}
  else if (document.getElementById){
    var rng = document.createRange();
    var el = document.getElementById(elementid);
    rng.setStartBefore(el);
    var htmlFrag = rng.createContextualFragment(content);
    while (el.hasChildNodes())
      el.removeChild(el.lastChild);
    el.appendChild(htmlFrag);
    }
  }



function createTypeDD(index) {
  var adultCount = roomsArray[index]['numadults'];
	var selHtml = (adultCount>2) ? '' :
								'<div class="roomSeg"><div class="roomItem">Room Type:&nbsp;</div>' +
								'<div class="roomItem" style="float:right"><select name="room_' + String(index) +
								'_type" onChange="roomsArray[' + String(index) +
								'][\'type\']=this.value;"></select></div></div>';
	return selHtml;
	}



function deleteRoom(roomsArr) {
  var i = (arguments.length>1) ? arguments[1] : 1;
	while (i>0) {
		var numRooms = roomsArr.length;
		roomsArr[numRooms-1] = null;
		roomsArr.length--;
		i--;
    }
	return roomsArr;
	}



function formChildErrors(frmObj)
{
	var valid = true;
	var numKids = false;
	var testVal = 0;
	var objPrefix, warnObj;
	for (var i=0;i<frmObj.numrooms.value;i++)
	{
		objPrefix = 'room_' + i + '_';
		warnObj = document.getElementById('childAgeWarn' + i);
		warnObj.style.display = 'none';
		eval ('numKids = frmObj.' + objPrefix + 'numchildren.value;');
		if (numKids > 0)
		{
			for (var j=0;j<numKids;j++)
			{
				eval ('testVal = frmObj.' + objPrefix + 'childage_' + j + '.value;');
				if (!testVal || testVal==null || testVal=='null')
				{
					warnObj.style.display = 'block';
					valid = false;
				}
			}
		}
	}
	return valid;
}



function formRooms(frmObj, divName, roomsArr, numRooms)
{
	//var addToQuote = document.getElementById('addToQuote');
	if (numRooms == 0)
	{
		changeHtmlContent(divName, groupRoomsHtml());
		initRequestForm(frmObj);
	}
	else
	{
		changeHtmlContent(divName,formRoomsHtml(numRooms));
		populateRoomsDDs(frmObj, roomsArr);
	}
	initButtons(frmObj);
	saveFormToCookie(frmObj);
	return true;
}



function formRoomsHtml(numRooms) {
	var html = '';
  var existingRooms = roomsArray.length;
	if (numRooms < existingRooms) {
	  deleteRoom(roomsArray, (existingRooms-numRooms));
		}
	else if (numRooms > existingRooms) {
	  addNewRoom(roomsArray, (numRooms-existingRooms));
		}
	var i=0;
	while (i<numRooms) {
	  html += getRoomHTML(i);
		i++;
		}
	return html;
	}



function getRoomHTML(index) {
// header row if more than one room
  var htmlStr = '';
	if (roomsArray.length>1) {
		htmlStr += '<div class="roomSeg" style="font-weight: bold;">Room ' + (index+1) + '</div>';
	}
// #adults and roomtype row
  htmlStr += '<div class="roomSeg"><div class="roomItem">Number of Adults</div>' +
	           '<div class="roomItem" style="float:right"><select name="room_' +
	           String(index) + '_numadults" onChange="roomsArray[' +
						 String(index) + '][\'numadults\']=this.value;' +
						 'formRooms(this.form,\'roomDetail\',roomsArray,roomsArray.length);return true;">' +
						 '</select></div></div>';
  htmlStr += createTypeDD(index);

// #kids and child ages row
  htmlStr += '<div class="roomSeg"><div id="childAgeWarn' + String(index) + '" class="warn">' +
						 'Please enter all child ages for this room</div>' +
						 '<div class="roomItem">Number of Children</div>' +
	           '<div class="roomItem" style="float:right"><select name="room_' +
	           String(index) + '_numchildren" onChange="roomsArray[' +
						 String(index) + '][\'numchildren\']=this.value;' +
						 'formRooms(this.form,\'roomDetail\',roomsArray,roomsArray.length);return true;">' +
						 '</select></div></div>';
  htmlStr += createChildAgeDDs(index);
	return htmlStr;
	}



function getstayLen(frm) {
  var checkoutYear = getYr(frm,'O');
	checkout_Object.setPicked(checkoutYear, frm.checkoutMonth.value, frm.checkoutDay.value);
	
	var chkIn = new Date(frm.checkinYear.value, frm.checkinMonth.value, frm.checkinDay.value);
	var chkOut = new Date(checkoutYear, frm.checkoutMonth.value, frm.checkoutDay.value);
	
	var diff = new Date(chkOut.getTime() - chkIn.getTime());
	frm.duration.value = Math.round(diff.getTime()/oneDay);
  frm.checkoutYear.value = checkoutYear;
	return frm.duration.value;
}



function getYr(frm, in_out) {
	var now, year, month, day, chkInM, chkInD, chkInY, chkOutM, chkOutD, chkOutY;
	now = new Date;
	year = now.getFullYear();
	month = now.getMonth();
	day = now.getDate();
	
	chkInM = Number(frm.checkinMonth.value);
	chkInD = Number(frm.checkinDay.value);
	chkOutM = Number(frm.checkoutMonth.value);
	chkOutD = Number(frm.checkoutDay.value);
	
	chkInY = ((chkInM < month) || (chkInM==month && chkInD<day)) ? year+1 : year;
	chkOutY = ((chkOutM < chkInM) || (chkOutM==chkInM && chkOutD<=chkInD)) ? chkInY+1 : chkInY;

	if (in_out=='I') {return chkInY}
	else if (in_out=='O') {return chkOutY}
	else {return false}
}



function groupRoomsHtml()
{
	var html = '<div style="margin-bottom:0.5em;clear:both;">'
					 + '<div style="float:left;clear:both;">'
					 + '<select name="singleAmount" onChange="updateTotalAdults(this.form)"></select> Singles<br>'
					 + '<select name="twinAmount" onChange="updateTotalAdults(this.form)"></select> Twins<br>'
					 + '<select name="tripleAmount" onChange="updateTotalAdults(this.form)"></select> Triples<br>'
					 + '<select name="quadAmount" onChange="updateTotalAdults(this.form)"></select> Quads<br>'
					 + '</div>'
					 + '<div style="float:right;clear:right;overflow:visible;">'
					 + 'Adults<br>'
					 + '<input type="text" name="totalAdults" size="1" readonly="readonly"><br>'
					 + 'Rooms<br>'
					 + '<input type="text" name="totalRooms" size="1" readonly="readonly">'
					 + '</div>'
					 + '</div>';
	return html;
}



function groupToStdRooms(frmObj)
{
	var numRooms = frmObj.totalRooms.value;
	var roomArr = new Array();
	roomArr.length = numRooms;
	roomsArray = initRooms(roomArr);
	var i, j, k, hiddenObj, ddObj, roomTypeValue;
	i=0;
	for (j=0; j<roomTypeDDs.length; j++)
	{
		eval('ddObj = frmObj.' + roomTypeDDs[j] + ';');
		for (k=0; k<ddObj.value; k++)
		{
			roomsArray[i]['numadults'] = j+1;
			roomsArray[i]['numchildren'] = 0;
			if (j<2)
			{
				roomsArray[i]['type'] = (j==0) ? 'S' : 'TW';
			}
			i++;
		}
	}
	frmObj.numrooms.value = numRooms;
	changeHtmlContent('roomDetail', formRoomsHtml(numRooms));
	formRooms(frmObj, 'roomDetail', roomsArray, numRooms);
}



function initButtons(frmObj)
{
	var srchButtonLink = document.getElementById('srchButtonLink');
	var resetButton = document.getElementById('resetButton');
	var topLabel = document.getElementById('top');
	if (chooseGroupForm(frmObj))
	{
		srchButtonLink.title = 'Choose hotels and request a quote for a group booking';
		changeHtmlContent('srchButtonLink', 'Group Quote');
		changeHtmlContent('top', 'Request Quote');
		if ( resetButton )
		{
			resetButton.style.display = 'block';
		}
	}
	else
	{
		srchButtonLink.title = 'Search live rates and availability';
		changeHtmlContent('srchButtonLink', 'Search Now');
		changeHtmlContent('top', (isHotelPage) ? 'Book Hotel' : 'Check Availability');
		if ( resetButton )
		{
			resetButton.style.display = 'none';
		}
	}
}



function initCheckOut(frm, chkIn, stayLen) {
/* frm : form object
   chkIn : Date object
	 stayLen : integer */
	var chkOut = new Date(chkIn.getTime() + stayLen*oneDay);
	
	frm.checkoutYear.value = chkOut.getFullYear();
	frm.checkoutMonth.value = chkOut.getMonth();
	PopulateDay(frm.checkoutMonth, frm.checkoutDay, frm.checkoutYear.value);
	frm.checkoutDay.value = chkOut.getDate();
}



function initForm(frm, divName, yrNum, moNum, dayNum, roomArr) {
	if (document.forms.length > 0) {
		var now = new Date;
		if (arguments.length < 3) {
			var chkIn = new Date(now.getTime() + 14*oneDay); // default checkIn to 2 weeks from now
		}
		else {
			var chkIn = new Date(yrNum, moNum, dayNum);
		}

		frm.checkinYear.value = chkIn.getFullYear();
		frm.checkinMonth.value = chkIn.getMonth();
		PopulateDay(frm.checkinMonth, frm.checkinDay, frm.checkinYear.value);
		frm.checkinDay.value = chkIn.getDate();
		checkin_Object.setPicked(frm.checkinYear.value, frm.checkinMonth.value, frm.checkinDay.value);
		
		frm.duration.value = stayLen;
		initCheckOut(frm, chkIn, stayLen);
		checkout_Object.setPicked(frm.checkoutYear.value, frm.checkoutMonth.value, frm.checkoutDay.value);
		
		updateDayOfWeek(frm, 'checkinWeekday', 'checkoutWeekday');
		if (arguments.length < 6) {
			var numRooms = default_numrooms;
			var roomArr = new Array(numRooms);
			roomsArray = initRooms(roomArr);
		}
		else {
			var numRooms = roomArr.length;
		}
		PopulateNumDD(frm.numrooms, maxrooms, numRooms, 1);
		frm.numrooms[frm.numrooms.options.length] = new Option((maxrooms+1) + "+", 0);
		formRooms(frm, divName, roomArr, numRooms);
	}
}



function initRequestForm(frmObj, defaultSelected)
{
	if (arguments.length < 2)
	{
		defaultSelected = stdRoomsToGroups();
	}
	var maxGroupRooms = 20;
	var setSelected, ddObj;
	for (var j=0; j<roomTypeDDs.length; j++)
	{
		eval ('ddObj = frmObj.' + roomTypeDDs[j] + ';');
		for (var i=0; i<=maxGroupRooms; i++)
		{
			ddObj.options[i] = new Option(i, i);
		}
		ddObj.selectedIndex = defaultSelected[j];
	}
	//clearDownRoomsDD(frmObj);
	frmObj.numrooms.value = 0;
	updateTotalAdults(frmObj);
}



function initRooms(roomsArr) {
  var numRooms = roomsArr.length;
	for (var i=0;i<numRooms;i++) {
		roomsArr[i] = createRoom();
		}
	return roomsArr;
	}



function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}



function makeArray()    {
    this[0] = arguments.length;
    for (var i = 0; i<arguments.length; i++) {
        this[i+1] = arguments[i];
				}
}



function PopulateDay(objMnth, objDay, fYear)
	{
	var daySel = objDay.value;
	objDay.options.length=0;

	if (LeapYear(fYear)) var days = daysofmonthLY[objMnth.selectedIndex+1]; 
	else                 var days = daysofmonth[objMnth.selectedIndex+1];

	for (var intCounter=0;intCounter<days;intCounter++)
	{
	 objDay[intCounter] = new Option
			(intCounter+1,intCounter+1,false,false);
	}

	if (daySel > days) daySel = days;
	objDay.value = daySel;
	}



function PopulateChildAgeDD(objDD, sel) {
  var numOpts = maxchildage+2;
  objDD.options.length = numOpts;
	objDD[0] = new Option('-',null,(sel==''));
	for (var i=1; i<numOpts; i++) {
		objDD[i] = new Option(i-1,i-1,(i-1==sel));
		}
	objDD.value = sel;
	}



function PopulateNumDD(objDD, numOpts, sel) {
  var n = (arguments.length>3) ? arguments[3] : 1;
  objDD.options.length = numOpts;
	for (var i=0; i<numOpts; i++) {
		objDD[i] = new Option(i+n,i+n,(i+n==sel));
		}
	objDD.value = sel;
	}



function populateRoomsDDs(frmObj, roomsArray) {
	var numberOfChildren, childNum, numberOfAdults, roomArray, ddObj, objName, selAge;
//	for (roomNumber in roomsArray) {
	for (roomNumber=0; roomNumber<roomsArray.length; roomNumber++) {
	  roomArray = roomsArray[roomNumber];
		
	  numberOfAdults = roomArray['numadults'];
		objName = 'room_' + roomNumber + '_numadults';
		eval("ddObj = frmObj." + objName);
		PopulateNumDD(ddObj, maxadults, numberOfAdults);
		
		objName = 'room_' + roomNumber + '_type';
		eval("ddObj = frmObj." + objName);
		PopulateTypeDD(ddObj, numberOfAdults, roomArray['type']);
		
		numberOfChildren = roomArray['numchildren'];
		objName = 'room_' + roomNumber + '_numchildren';
		eval("ddObj = frmObj." + objName);
		PopulateNumDD(ddObj, maxchildren+1, numberOfChildren, 0);
		for (childNum=0;childNum<numberOfChildren;childNum++) {
			objName = 'room_' + roomNumber + '_childage_' + childNum;
			eval("ddObj = frmObj." + objName);
			selAge = (roomArray['childages']) ? roomArray['childages'][childNum] : null;
			PopulateChildAgeDD(ddObj, selAge);
			}

		}
	}
	


function PopulateTypeDD(objDD, numAdults, sel) {
  if (numAdults>2) return false;
	var numOpts = roomtype_options[numAdults].length;
  objDD.options.length = numOpts;
	var ddVal, ddText;
	for (var i=0; i<numOpts; i++) {
	  ddVal = roomtype_options[numAdults][i];
		ddText = roomtype_option_labels[ddVal];
		objDD[i] = new Option(ddText, ddVal, (ddVal==sel));
		if (ddVal==sel) {
		  var setIndex = i;
			}
		}
	if (setIndex) {
	  objDD.selectedIndex = setIndex;
		}
	return true;
	}



function postHTTPdata(url) 
{
	var data = (arguments.length > 1) ? arguments[1] : null;
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
	// branch for IE/Windows ActiveX version
	}
	else if (window.ActiveXObject)
	{
		try
		{
				req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)
			{
				try
				{
						req = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) { return true; }
			}
	}
	if (req)
	{
		req.open('POST', url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(data);
	}
	return true;
}



function resetForm(datesFrmObj)
{
	initForm(datesFrmObj, 'roomDetail');
	if (arguments.length > 1)
	{
		var groupFrmObj = arguments[1];
		groupFrmObj.hotelsPref1.value = '';
		groupFrmObj.hotelsPref2.value = '';
		groupFrmObj.hotelsPref3.value = '';
		groupFrmObj.comment.value = '';
		groupFrmObj.nameField.value = '';
		groupFrmObj.email.value = '';
		groupFrmObj.phone.value = '';
		var radioObj;
		for (i=2; i<=5; i++)
		{
			if (document.getElementById('standardPref' + i))
			{
				radioObj = document.getElementById('standardPref' + i);
				radioObj.checked = false;
			}
		}
		var hotelList = arguments[2];
		hotelList.reInit();
	}
}



function saveFormToCookie(frmObj)
{
	var stdArgs = new Array();
	var grpArgs = new Array();
	var argMatchStd = /^formpage|city|checkin(Month|Day|Year)|duration|numrooms|room_\d_\w+$/;
	var argMatchGrp = /^(single|twin|triple|quad)Amount$/;
	for (i=0; i<frmObj.elements.length; i++)
	{
		if (argMatchStd.test(frmObj.elements[i].name))
		{
			stdArgs[stdArgs.length] = frmObj.elements[i].name + '=' + frmObj.elements[i].value;
		}
		else if (argMatchGrp.test(frmObj.elements[i].name))
		{
			grpArgs[grpArgs.length] = frmObj.elements[i].name + '=' + frmObj.elements[i].value;
		}
	}
	document.cookie = 'searchStd=' + encodeURI(stdArgs.join('&')) + '; path=/';
	document.cookie = 'searchGrp=' + encodeURI(grpArgs.join('&')) + '; path=/';
}



function stdRoomsToGroups()
{
	var index = 0;
	var groupQuantities = new Array(0, 0, 0, 0);
	for (var i=0; i<roomsArray.length; i++)
	{
		index = roomsArray[i]['numadults'] - 1; // 0=single, 1=twin, etc
		groupQuantities[index]++;
	}
	return groupQuantities;
}



function stdRoomsToGroupForm(frmObj)
{
	if (frmObj.numrooms.value > 0)
	{
		var quantities = stdRoomsToGroups();
		var hiddenObj;
		var numRooms = 0;
		var numAdults = 0;
		for (i=0; i<roomTypeDDs.length; i++)
		{
			hiddenObj = document.createElement('input');
			hiddenObj.setAttribute('type', 'hidden');
			hiddenObj.setAttribute('name', roomTypeDDs[i]);
			hiddenObj.setAttribute('value', quantities[i]);
			frmObj.appendChild(hiddenObj);
			numRooms += quantities[i];
			numAdults += (quantities[i] * (i+1));
		}
		hiddenObj = document.createElement('input');
		hiddenObj.setAttribute('type', 'hidden');
		hiddenObj.setAttribute('name', 'totalAdults');
		hiddenObj.setAttribute('value', numAdults);
		frmObj.appendChild(hiddenObj);
		hiddenObj = document.createElement('input');
		hiddenObj.setAttribute('type', 'hidden');
		hiddenObj.setAttribute('name', 'totalRooms');
		hiddenObj.setAttribute('value', numRooms);
		frmObj.appendChild(hiddenObj);
	}
}



function updateCheckOut(frm, stayLen) {
	var now = new Date();
	var year = now.getFullYear();
	var month = now.getMonth();
	var day = now.getDate();
	
	var chkInM = frm.checkinMonth.value;
	var chkInD = frm.checkinDay.value;
	var chkInY = getYr(frm,'I');
	if (frm.checkinYear.value != chkInY)
	{
		frm.checkinYear.value = chkInY;
		checkin_Object.setPicked(frm.checkinYear.value, frm.checkinMonth.value, frm.checkinDay.value);
	}
	
	var chkIn = new Date(chkInY, chkInM, chkInD);
	initCheckOut(frm, chkIn, stayLen);
	checkout_Object.setPicked(frm.checkoutYear.value, frm.checkoutMonth.value, frm.checkoutDay.value);
}



function updateDayOfWeek(frm, checkinTextDiv, checkoutTextDiv)
{
	var checkoutYear = getYr(frm, 'O');
	var chkIn = new Date(frm.checkinYear.value, frm.checkinMonth.value, frm.checkinDay.value);
	var chkOut = new Date(checkoutYear, frm.checkoutMonth.value, frm.checkoutDay.value);
	changeHtmlContent(checkinTextDiv, weekday[chkIn.getDay()]);
	changeHtmlContent(checkoutTextDiv, weekday[chkOut.getDay()]);
}



function updateTotalAdults(frmObj)
{
	var numAdults = 0;
	var numRooms = 0;
	for (var j=0; j<roomTypeDDs.length; j++)
	{
		eval ('ddObj = frmObj.' + roomTypeDDs[j] + ';');
		numAdults += (j+1) * ddObj.value;
		numRooms += Number(ddObj.value);
	}
	frmObj.totalAdults.value = numAdults;
	frmObj.totalRooms.value = numRooms;
	initButtons(frmObj);
	saveFormToCookie(frmObj);
}



/*
*
*
*
*
*
*
*
*
*/



function scrutinize(frmObj)
{
	var returnFromFunc = (arguments.length > 1) && (arguments[1] == true);
	
	var goToGroupForm = chooseGroupForm(frmObj);
	var groupFormURL = '/request/groupform.php';
	var atGroupForm = (window.location.pathname == groupFormURL);
	var Today = new Date();
	var valid = true;
	var warn;
	var warningDivs = new Array('pastDateWarn', 'numNightsWarn');
	var warningDivsGroups = new Array('hotelPrefWarn', 'nameWarn', 'emailWarn');
	if (goToGroupForm && atGroupForm)
	{
		warningDivs = warningDivs.concat(warningDivsGroups);
	}
	for (var i=0; i<warningDivs.length; i++)
	{
		if (document.getElementById(warningDivs[i]))
		{
			switch (warningDivs[i])
			{
				case 'pastDateWarn' :
					warn = (checkin_Object.picked.date < Today);
					break;
				case 'numNightsWarn' :
					warn = ((frmObj.duration.value < 1) || (frmObj.duration.value > 21));
					break;
				case 'hotelPrefWarn' :
					var elemObj;
					var foundPref = (document.getElementById('quoteStandard').style.display == 'none');
					for (var j=2; !foundPref && j<=5; j++)
					{
						elemObj = document.getElementById('standardPref' + j);
						foundPref = elemObj.checked;
					}
					warn = !foundPref;
					break;
				case 'nameWarn' :
					warn = (userDetail.nameField.value.length < 2);
					break;
				case 'emailWarn' :
					var validEmailPat = /^\w+[\w\.\-\'\+]*\w+@\w+([\.-]?\w+)*(\.\w{2,4})+$/i;
					warn = !validEmailPat.test(userDetail.email.value);
					break;
				default :
					// never likely to occur
					warn = false;
			}
			document.getElementById(warningDivs[i]).style.display = (warn) ? 'block' : 'none';
			valid = (valid && !warn);
		}
	}
	if (goToGroupForm)
	{
		frmObj.action = (atGroupForm) ? 'do_groupquote_rqst.php' : groupFormURL;
		if (atGroupForm)
		{
			stdRoomsToGroupForm(frmObj);
		}
	}
	else
	{
		frmObj.action = frmObj.formdir.value + '/search.php';
		// CHECK NUMBER OF ROOMS : 0=Group (No Kids), >0 needs validation of child ages
		if (frmObj.numrooms.value == 0)
		{
			groupToStdRooms(frmObj);
		}
		else
		{
			valid = (formChildErrors(frmObj) && valid);
		}
	}
	
	if (!valid)
	{
	  alert ('Please amend the errors marked in red and try submitting your request again');
		if (returnFromFunc)
		{
			return false;
		}
	}
	else
	{
		saveFormToCookie(frmObj);
		frmObj.day.value = frmObj.checkinDay.value;
		frmObj.month.value = (Number(frmObj.checkinMonth.value)+1);
		frmObj.year.value = frmObj.checkinYear.value;
		if (returnFromFunc)
		{
			return true;
		}
		else
		{
			if (atGroupForm)
			{
				appendUserDetailVals(userDetail, frmObj);
			}
			//alert('check the form now');
			frmObj.submit();
		}
	}
}

	
//-->