function buildOptionSequence (start, end, selected) {
	var retval = '';
	if (selected == 0) {
		retval += "<option value=\"\" selected=\"selected\"></option>\n";
	}
	for(var i = start; i <= end; i++) {
		var sel_text = "";
		if(i == selected) {
			sel_text = 'selected="selected"';
		}
		retval += '<option value="'+i+'" '+sel_text+'>'+i+"</option>\n";
	}
	return retval;
	
}

function selectAges(childcount,room_row) {
 	var age_table = document.getElementById('children_age_table');
	
 	// If the number of children specified is outside our range,
 	// just have a blank row.
	if((childcount < 0) || (childcount > 2)) {
		if ((childcount == 0) && age_table.rows[room_row]) {
			var delrow = age_table.rows[room_row];
			delrow.cells[0].innerHTML = "";
			if(delrow.cells[1])
				delrow.cells[1].innerHTML = "";
			}
		return 0;
	}

	// Clear the row, if it already exists.
	//if(age_table.rows[room_row]) age_table.deleteRow(room_row);

	if(age_table.rows.length == 1 && age_table.rows[0].cells[1] == undefined) {
		var age_header = age_table.rows[0].insertCell(0);
		age_header.innerHTML = '<b>Childrens\' Ages</b>';
	}

	// check to see if rows above our row exist; if not fill them with blanks
	for(var i = 1; i < room_row; i++) {
		if(!age_table.rows[i]) {
			var dummyrow = age_table.insertRow(i);
			var dummycell = dummyrow.insertCell(0);
			dummycell.innerHTML = "";
		}
	}

	var row_exists = false;
	if (age_table.rows[room_row] != undefined) row_exists = true; 
	
	var diff = 0;
	if (row_exists) {
		diff = childcount - (age_table.rows[room_row].cells.length-1);
								 // -1 from length first to account for label
		
		if (diff > 0) {
			// Add cells
			
			// Add the label, if needed.
			if(age_table.rows[room_row].cells[0].innerHTML.length < 1) {
				age_table.rows[room_row].cells[0].innerHTML = 'Room '+room_row;
			}
			
			// Add the needed cells
			for (var i = age_table.rows[room_row].cells.length; i <= childcount; i++) {
				var x = age_table.rows[room_row].insertCell(i);
				x.innerHTML = '<select name=room_'+room_row+'_child_'+i+'>' + buildOptionSequence(1,12,0) + '</select>';
				x.width = 20;
			}
		} else {
			// Remove cells
			while ((age_table.rows[room_row].cells.length-1) > childcount) {
				//subtract the label row
				age_table.rows[room_row].deleteCell(age_table.rows[room_row].cells.length-1);
			}
			
			// In case we removed both children - leave a blank one.
			if (age_table.rows[room_row].cells.length == 1) {
				age_table.rows[room_row].cells[0].innerHTML = "";
			}
				
			
		}
	} else {
		// The row doesn't yet exist, we can just plop it in there.
		var newrow = age_table.insertRow(room_row);
		var firstchild = newrow.insertCell(0);
		firstchild.innerHTML = 'Room '+room_row;
		
		var secondchild = newrow.insertCell(1);
		secondchild.innerHTML = '<select name=room_'+room_row+'_child_1>' + buildOptionSequence(1,12,0) + '</select>';
		secondchild.width = 20;
	
		if(childcount == 2) {
			var thirdchild = newrow.insertCell(2);
			thirdchild.innerHTML = '<select name=room_'+room_row+'_child_2>' + buildOptionSequence(1,12,0) + '</select>';
		}
	}
}

function addRooms(num) {
	if (num < 1) return 0;
	if (num > 8) {
		alert("You may book a maximum of 8 rooms.");
		return 0;
	}

	var room_table = document.getElementById('room_table');

	// When doing this, -1 from length, because first row is just the header
	var diff = num - (room_table.rows.length - 1);

	if (diff > 0) {
		// We need to add rooms.
		for (var i = room_table.rows.length; i <= num; i++) {
			
			var new_row = room_table.insertRow(i);
			var room_number = new_row.insertCell(0);
			var adult_count = new_row.insertCell(1);
			var child_count = new_row.insertCell(2);
	
			room_number.innerHTML = '<div align="left"><b>Room #'+i+':</b></div>';
			adult_count.innerHTML = '<select name="room_'+i+'_adults">'+(buildOptionSequence(1,4,2))+"</select>";
			child_count.innerHTML = '<select name="room_'+i+'_children" onChange="selectAges(this.value, '+i+');">'+buildOptionSequence(0,2)+"</select>";
		}
	} else {
		// We need to remove rooms.
		
		// clear unneeded child age rows
		var age_table = document.getElementById('children_age_table');
		while ((age_table.rows.length-1) > num) {        
			// subtract the label row
			age_table.deleteRow(age_table.rows.length-1);
		}

		// clear unneeded rows	
		while ((room_table.rows.length-1) > num) {
			//subtract the label row
			room_table.deleteRow(room_table.rows.length-1);
		}
	}
}

function rooms_init(num,guests) {
	if (num < 1) return 0;
	if (num > 8) {
		alert("You may book a maximum of 8 rooms.");
		return 0;
	}
    
	var room_table = document.getElementById('room_table');

	// clear existing rows
	for (var i = (room_table.rows.length - 1); i > 0; i--) {
		room_table.deleteRow(i);
	}
	
	// clear deprecated child age rows
	var age_table = document.getElementById('children_age_table');
	while ((age_table.rows.length-1) > num) {        
		//subtract the label row
		age_table.deleteRow(age_table.rows.length-1);
	}

	for (var i = 1; i <= num; i++) {
		var new_row = room_table.insertRow(i);
		var room_number = new_row.insertCell(0);
		var adult_count = new_row.insertCell(1);
		var child_count = new_row.insertCell(2);
		
		room_number.innerHTML = '<div align="left"><b>Room #'+i+':</b></div>';
		adult_count.innerHTML = '<select name="room_'+i+'_adults">'+buildOptionSequence(1,4,guests[i-1][0])+"</select>";
		child_count.innerHTML = '<select name="room_'+i+'_children" onChange="selectAges(this.value, '+i+');">'+buildOptionSequence(0,2,guests[i-1][1].length)+"</select>";
	}
	
	for(var i = 0; i < guests.length; i++) {
		if (guests[i].length > 0) {
			selectAgesFilled(guests[i][1].length,i+1,guests[i][1]);
		}
	}
	
}

function selectAgesFilled(childcount,room_row,ages) {
 	var age_table = document.getElementById('children_age_table');
	
	if((childcount < 1) || (childcount > 2)) {
		if ((childcount == 0) && age_table.rows[room_row]) {
			var delrow = age_table.rows[room_row];
			delrow.cells[0].innerHTML = "";
			if(delrow.cells[1])
				delrow.cells[1].innerHTML = "";
			}
		return 0;
	}

	if(age_table.rows[room_row]) age_table.deleteRow(room_row);

	if(age_table.rows.length == 1 && age_table.rows[0].cells[1] == undefined) {
		var age_header = age_table.rows[0].insertCell(0);
		age_header.innerHTML = '<b>Childrens\' Ages</b>';
	}

	// check to see if rows above our row exist; if not fill them with blanks
	for(var i = 1; i < room_row; i++) {
		if(!age_table.rows[i]) {
			var dummyrow = age_table.insertRow(i);
			var dummycell = dummyrow.insertCell(0);
			dummycell.innerHTML = "";
		}
	}

	var newrow = age_table.insertRow(room_row);
	var firstchild = newrow.insertCell(0);
	firstchild.innerHTML = 'Room '+room_row;
	
	var secondchild = newrow.insertCell(1);
	if(!ages[0]) {
		ages[0] = 0;
	}
	if(!ages[1]) {
		ages[1] = 0;
	}
	secondchild.innerHTML = '<select name=room_'+room_row+'_child_1>' + buildOptionSequence(1,12,ages[0]) + '</select>';
	secondchild.width = 20;

	if(childcount == 2) {
		var thirdchild = newrow.insertCell(2);
		thirdchild.innerHTML = '<select name=room_'+room_row+'_child_2>' + buildOptionSequence(1,12,ages[1]) + '</select>';
	}
}
