// Start of code taken from hotels.com LIVE site. Contains modifications to
// ensure XHTML is generated and not HTML.
var adultHelp = "";
var textRooms;
var textRoom;
var textAdults;
var textChildren;
var textAgeOfChildren;
var textChildHelp;
var textChildError = "Please specify the ages of all children.";
var adultsPerRoom = new Array();
var childrenPerRoom = new Array();
var childAgesPerRoom = new Array();
var x = "";

// NOTE: Question marks ("?") get replaced with a numeric value
var textRoomX = "";
var textChildX = "";

if (document.getElementsByName("jsNoOfRooms")[0] != null) {
	numRooms = document.getElementsByName("jsNoOfRooms")[0].value;
} else {
	// numRooms=document.getElementsByName("numberOfRooms")[0].value;
	numRooms = 1;
}

if (numRooms < 1) {
	numRooms = 1;
}

if (document.getElementsByName("jsadultsPerRoom")[0] != null) {
	if (numRooms > 1) {
		var ctrChildAges = 0;

		for ( var j = 0; j < numRooms; j = j + 1) {
			adultsPerRoom[j] = document.getElementsByName("jsadultsPerRoom")[j].value;
			childrenPerRoom[j] = document
					.getElementsByName("jschildrenPerRoom")[j].value;
			var childAges = new Array();
			for ( var k = 0; k < childrenPerRoom[j]; k++) {
				childAges[k] = document.getElementsByName("jschildAgesPerRoom")[ctrChildAges].value;
				ctrChildAges++;
			}
			childAgesPerRoom[j] = childAges;
		}
	} else {
		adultsPerRoom[0] = document.getElementsByName("jsadultsPerRoom")[0].value;
		childrenPerRoom[0] = document.getElementsByName("jschildrenPerRoom")[0].value;
		var childAges = new Array();
		for ( var k = 0; k < childrenPerRoom[0]; k++) {
			childAges[k] = document.getElementsByName("jschildAgesPerRoom")[k].value;
		}
		childAgesPerRoom[0] = childAges;
	}
} else {
	var ctrChildAges = 0;

	for ( var j = 0; j < numRooms; j = j + 1) {

		adultsPerRoom[j] = 2;
		childrenPerRoom[j] = 0;
	}
}

refresh();
function setChildAge(room, child, age) {
	if (childAgesPerRoom[room] == null) {
		childAgesPerRoom[room] = new Array();
	}
	childAgesPerRoom[room][child] = age;
}
function setNumAdults(room, numAdults) {
	adultsPerRoom[room] = numAdults;
}

var childrensInThisRoom = 0;
function setNumChildren(room, numChildren) {
	childrenPerRoom[room] = numChildren;
	refresh();
}
function setNumRooms(x) {
	numRooms = x;
	for (i = 0; i < x; i++) {
		if (adultsPerRoom[i] == null) {
			adultsPerRoom[i] = 2;
		}
		if (childrenPerRoom[i] == null) {
			childrenPerRoom[i] = 0;
		}
	}
	refresh();
}
function renderRoomSelect() {
	var x = '';
	x += '<select class="select mgnTop5" style="width:50px;" name="rooms" id="rooms1" onchange="setNumRooms(this.options[this.selectedIndex].value);">';
	for ( var i = 1; i < 9; i++) {
		x += '<option value="' + i + '"'
				+ (numRooms == i ? ' selected="selected"' : '') + '>' + i
				+ '</option>';
	}
	x += '<option value="9"' + (numRooms == 9 ? ' selected="selected"' : '') + '>9+' + '</option>';
	x += '</select>';
	return x;
}
function refresh() {
	maxChildren = 0;
	var showChildHelp = false;
	x = "";
	for ( var i = 0; i < numRooms; i++) {
		if (childrenPerRoom[i] > maxChildren) {
			maxChildren = childrenPerRoom[i];
		}
		if (childrenPerRoom[i] > 0) {
			showChildHelp = true;
		}
	}

	if (numRooms > 8) {
		x += '<table  cellpadding="0" cellspacing="0" border="0" class="font100Per width280"><tr><td valign="top" width="123">';
		x += '<span class="hp_booktxt"><label for="rooms1">&nbsp;' + textRooms + '</label></span><br />';
		x += '&nbsp;' + renderRoomSelect() + '</td></tr></table>';
	} else {
		x += '<table  cellpadding="0" cellspacing="0" border="0" class="font100Per width280 fltLft mgnLft2"><tr><td valign="top">';
		if ((numRooms == 1) && (maxChildren == 0)) {
			x += '<table  cellpadding="0" cellspacing="0" border="0" class="font100Per width280"><tr><td valign="top" width="119">';
			x += '<span class="hp_booktxt"><label for="rooms1">' + textRooms + '</label></span><br />';
			x += renderRoomSelect() + '</td>';
			x += '<td valign="top" width="55" style="padding-left:2px;">';
			x += '<span class="hp_booktxt"><label for="room-0-adult-total">' + textAdults + '</label></span><br />';

			for ( var i = 0; i < numRooms; i++) {
				x += '<span class="weak">' + getValue(textRoomX, i + 1) + '</span>';
				x += buildSelect(
						'searchParams.rooms[' + i + '].numberOfAdults',
						'setNumAdults(' + i + ', this.options[this.selectedIndex].value)',
						1, 4, adultsPerRoom[i]);

				if ((i + 1) < numRooms) {
					x += '<br />';
				}
			}

			x += '</td><td>';
			x += '<span class="hp_booktxt"><label for="room-0-child-total">' + textChildren + '</label></span><br />';

			for ( var i = 0; i < numRooms; i++) {
				x += '<span class="weak">' + getValue(textRoomX, i + 1) + '</span>';
				x += buildSelect(
						'children[' + i + ']',
						'setNumChildren(' + i + ', this.options[this.selectedIndex].value)',
						0, 3, childrenPerRoom[i]);

				if ((i + 1) < numRooms) {
					x += '<br />';
				}
			}

			x += '</td></tr>';
			var didHeader = false;
			x += '</table>';
		}// end of if
		else if (((numRooms == 1) && (maxChildren > 0))
				|| ((numRooms > 1) && (maxChildren >= 0))) {
			x += '<table cellpadding="0" cellspacing="0" border="0" width="280" class="font100Per fltLft"><tr><td valign="top" colspan="3">';
			x += '<span class="hp_booktxt"><label for="rooms1">' + textRooms + '</label></span><br />';
			x += renderRoomSelect() + '</td></tr>';
			var i = 0;
			for (i = 0; i < numRooms; i++) {
				x += '<tr><td colspan="3"><div class="clr"><!-- --></div><div class="dashedSepWhite mgnTop8"><!-- --></div></td></tr>';
				x += '<tr><td valign="top" colspan="3"><table width="280" cellpadding="0" cellspacing="0" class="mgnTop8"><tr><td width="120" valign="top">';
				x += '<span class="hp_booktxt">' + textRoom + ' ' + (i + 1)
						+ '</span></td>';
				x += '<td width="55"><span class="hp_booktxt"><label for="room-0-adult-total">' + textAdults + '</label></span><br />';
				x += '<span class="weak">' + getValue(textRoomX, i + 1) + '</span>';
				x += buildSelect(
						'searchParams.rooms[' + i + '].numberOfAdults',
						'setNumAdults(' + i + ', this.options[this.selectedIndex].value)',
						1, 4, adultsPerRoom[i]);
				x += '</td>';
				x += '<td><span class="hp_booktxt"><label for="room-0-child-total">' + textChildren + '</label></span><br />';
				x += '<span class="weak">' + getValue(textRoomX, i + 1) + '</span>';
				x += buildSelect(
						'children[' + i + ']',
						'setNumChildren(' + i + ', this.options[this.selectedIndex].value)',
						0, 3, childrenPerRoom[i]);
				x += '</td></tr></table></td></tr>';

				if (maxChildren > 0) {

					if (childrenPerRoom[i] > 0) {
						x += '<tr><td colspan="3"><table width="280" border="0" cellpadding="0" cellspacing="0"><tr><td width="120" valign="top"><div class="fltRgt mgnTop8 mgnRgt5 weak">' + textAgeOfChildren + '</div></td>';
						x += '<td>';

						x += '<div class="fltLft">';
						for ( var m = 0; m < childrenPerRoom[i]; m++) {
							var def = -1;

							if (childAgesPerRoom[i] != null) {
								if (childAgesPerRoom[i][m] != null) {
									def = childAgesPerRoom[i][m];
								}
							}
							x += '<div class="width50 fltLft mgnTop8 mgnRgt5">';
							x += getValue(textChildX, m + 1) + ' ';
							x += '<select class="select mgn0" name="searchParams.rooms[' + i + '].childrenAges[' + m + ']" style="width:50px;" onchange="setChildAge('
									+ i
									+ ', '
									+ m
									+ ', this.options[this.selectedIndex].value);">';
							x += '<option value="-1"' + (def == -1 ? ' selected="selected"'
									: '') + '>-?-' + '</option>';
							x += '<option value="0"' + (def == 0 ? ' selected="selected"'
									: '') + '>&lt;1' + '</option>';
							for ( var k = 1; k <= 17; k++) {
								x += '<option value="'
										+ k
										+ '"'
										+ (def == k ? ' selected="selected"'
												: '') + '>' + k + '</option>';
							}
							x += '</select>';
							x += '</div>';

						}
						x += '</div>';
						x += '</td></tr></table></td></tr>';
					}
				}
			}
			x += '</table>';
		}
		x += '</td></tr>';
		if (showChildHelp) {
			x += '<tr><td colspan="4" class="weak"><br />' + textChildHelp + '<br /></td></tr>';
		}
		x += '</table>';
		// end of if
	}
	document.getElementById("hot-search-params").innerHTML = x;

	// Tip: Used for debgging to see what the string "x" contains, where "x" is
	// the generic variable name hotels.com has used to output the innerHTML of
	// hot-search-params. The string is placed in the textarea box named "test".
}

function buildSelect(name, onchange, min, max, selected) {
	var x = '<select id="' + name
			+ '"  class="select mgnTop5" style="width:50px;" name="' + name
			+ '"';
	if (onchange != null) {
		x += ' onchange="' + onchange + '"';
	}
	x += '>\n';
	for ( var i = min; i <= max; i++) {
		x += '<option value="' + i + '"';
		if (i == selected) {
			x += ' selected="selected"';
		}
		x += '>' + i + '</option>' + '\n';
	}
	x += '</select>';
	return x;
}
function validateGuests(form) {
	if (numRooms < 5) {
		var missingAge = false;
		for ( var i = 0; i < numRooms; i++) {
			var numChildren = childrenPerRoom[i];
			if (numChildren != null && numChildren > 0) {
				for ( var j = 0; j < numChildren; j++) {
					if (childAgesPerRoom[i] == null
							|| childAgesPerRoom[i][j] == null
							|| childAgesPerRoom[i][j] == -1) {
						missingAge = true;
					}
				}
			}
		}
		if (missingAge) {
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}

function submitSearchForm(form) {
	if (form.numberOfRooms.value == '9') {
		window.location.href = "http://uk.hotels.com/index.jsp?locale=en_IE&pageName=groups&amp;cid="
				+ form.cid.value;
		return false;
	}

	if (form.city.value == '') {
		alert("Enter a city.");
		return false;
	}

	return submitGuestInfoForm(form);
}

function submitGuestInfoForm(form) {
	if (!validateGuests(form)) {
		return false;
	}
	if (isFireFox) {
		var gi = '';
		for ( var i = 0; i < numRooms; i++) {
			if (i > 0)
				gi += ':';
			gi += adultsPerRoom[i];
			if (childrenPerRoom[i] > 0) {
				gi += '-';
				for ( var j = 0; j < childrenPerRoom[i]; j++) {
					if (j > 0)
						gi += ',';
					gi += childAgesPerRoom[i][j];
				}
			}
		}
		form.numberOfRooms.value = numRooms;
		form.guestInfo.value = gi;
	}
	return true;
}
function getValue(str, val) {
	return str.replace(/\?/g, val);
}

