<!--
var _numberOfGuests = 0;
var _guestTableID = 'guestTable';
var _guestTableBodyID = 'guestTableBody';
var _guestRowIDPrefix = 'guestRow';

function validate_rsvp() {
	var errorMessage = getFormErrors();
	if (errorMessage != '') {
		alert(errorMessage);
		return false;
	}
	return true;
}

function getFormErrors()  {
	var errorMessage = '';
	errorMessage = appendStringWithReturn(errorMessage, ValidateFirstName());
	errorMessage = appendStringWithReturn(errorMessage, ValidateLastName());
	errorMessage = appendStringWithReturn(errorMessage, ValidateEmail());
	if (!ValidateGuestsNames()) 
		errorMessage = appendStringWithReturn(errorMessage, 'Please fill in the names of all your guests.');
	return errorMessage;
}

function appendStringWithReturn(appendTo, append) {
	if (append == '')
		return appendTo;
	if (appendTo == '')
		return append;
	return appendTo + '\n' + append;
}

function ValidateFirstName() {
	var isInvalid = IsBlank(GetElement('firstName'));
	ToggleValidator('firstNameValidator', isInvalid);
	if (isInvalid)
		return 'First Name is required.';
	return ''
}

function ValidateLastName() {
	var isInvalid = IsBlank(GetElement('lastName'));
	ToggleValidator('lastNameValidator', isInvalid);
	if (isInvalid)
		return 'Last Name is required.';
	return ''
}

function ValidateEmail() {
	var errorMessage = '';
	var emailElement = GetElement('email');
	var isInvalid = IsBlank(emailElement);
	if (isInvalid) 
		errorMessage = 'Email Address is required.';
	else {
		isInvalid = !IsValidEmail(emailElement.value);
		if (isInvalid) 
			errorMessage = 'Valid email address is required.';
	}
	ToggleValidator('emailValidator', isInvalid);
	return errorMessage;
}

function ValidateGuestsNames() {
	for (var guestNumber = 1; guestNumber <= _numberOfGuests; guestNumber++) {
		var firstNameElement = GetElement('guestFirstName' + guestNumber);
		if (firstNameElement.value == '')
			return false;
		var lastNameElement = GetElement('guestLastName' + guestNumber);
		if (IsBlank(lastNameElement))
			return false;
			//todo: show validator message
	}
	return true;
}


function GetNumberOfGuestsElement() {
	return GetElement('numberOfGuests');
}

//Utility functions.
function GetElement(elementName) {
	return document.getElementById(elementName);
}

function IsBlank(element) {
	return element.value == '';
}

function IsValidEmail(inputvalue){	
	var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
    return pattern.test(inputvalue);
}

function IsUnsignedInteger(s) {
	return (s.toString().search(/^[0-9]+$/) == 0);
}


function ToggleValidator(validatorName, visible) {
	var validator = GetElement(validatorName);
	if (visible)
		validator.style.display = "block";
	else
		validator.style.display = "none";
}




/////////////////////////


function GetGuestCookieValue(guestNumber, isFirstName) {
	var cookiePrefix;
	if (isFirstName)
		cookiePrefix = 'guestfirstname';
	else
		cookiePrefix = 'guestlastname';
	var guestCookie = get_cookie(cookiePrefix + guestNumber);
	if (guestCookie == null)
		return '';
	return guestCookie;
}



function ClearGuests(container) {
	if (document.getElementById(_guestTableID)) {
		var childTable = document.getElementById(_guestTableID);
		container.removeChild(childTable);
	}
}

function LoadGuestCookies() {
	var numberOfGuestsValue = get_cookie('numberofguests');
	
	if (numberOfGuestsValue == null || numberOfGuestsValue == '' || !IsUnsignedInteger(numberOfGuestsValue))
		numberOfGuestsValue = 0;
	
	UpdateNumberOfGuests(numberOfGuestsValue);
}



function get_cookie ( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}


//////////////////////////////// Guests

function ChangeNumberOfGuests() {
	var answer = -1;
	while (!IsUnsignedInteger(answer) || answer > 9) {
		answer = prompt("How many guests are you bringing? (No more than 9 please!)", _numberOfGuests);
		if (answer == "" || answer == null)
			answer = _numberOfGuests;
	}
	if (answer != _numberOfGuests)
		UpdateNumberOfGuests(answer);
}

function UpdateNumberOfGuests(newNumberOfGuests) {
	//alert('UpdateNumberOfGuests()');
	
	//Update the hidden input field.
	var numberOfGuestsValueElement = GetElement('numberOfGuestsValue');
	numberOfGuestsValueElement.value = newNumberOfGuests;

	//alert('UpdateNumberOfGuests()');
	
	//Update the displayed number.
	var numberOfGuestsElement = GetNumberOfGuestsElement();
	SetInnerText(numberOfGuestsElement, newNumberOfGuests);
	
	//alert(numberOfGuestsElement.innerText);
	
	//Generate the appropriate number of guest rows.
	GenerateTable(newNumberOfGuests);
	
	//Update the global variable.
	_numberOfGuests = newNumberOfGuests;
	
	//alert(numberOfGuestsElement.innerText);
}

function SetInnerText(element, text) {
	if (document.all)
		element.innerText = text;
	else
		element.textContent = text;
}

function GenerateTable(newNumberOfGuests) {

	var container = GetElement('guests');
	var heading = GetElement('guestHeading');
	
	if (newNumberOfGuests == 0)
		heading.style.display = "none";
	else
		heading.style.display = "block"
	
	//alert('GenerateTable()... _numberOfGuests = ' + _numberOfGuests);
	//alert('GenerateTable()... newNumberOfGuests = ' + newNumberOfGuests);
	
	//If the new number of guests is greater than the old number, add the difference starting at the index after the old number.
	//If the new number is less than the old number, remove the difference from the end of the old number.
	if (newNumberOfGuests == 0)
		ClearGuests(container);
	else if (newNumberOfGuests > _numberOfGuests) 
		AddGuestRows(container, newNumberOfGuests - _numberOfGuests);
	else
		RemoveGuestRows(container, _numberOfGuests - newNumberOfGuests);
	
}

function CreateGuestTableIfNeeded(container) {
	if (document.getElementById(_guestTableID))
		return;
	var table = document.createElement('TABLE');
	table.border = '0';
	table.id = _guestTableID;
	var tbody = document.createElement('TBODY');
	tbody.id = _guestTableBodyID;
	table.appendChild(tbody);
	container.appendChild(table);
	
	var trHeader = document.createElement('TR');
	trHeader.id = 'guestTableHead';
	tbody.appendChild(trHeader);
	var tdHeader1 = document.createElement('TD');
	tdHeader1.appendChild(document.createTextNode(' '));
	trHeader.appendChild(tdHeader1);
	var tdHeader2 = document.createElement('TD');
	tdHeader2.appendChild(document.createTextNode('First Name'));
	trHeader.appendChild(tdHeader2);
	var tdHeader3 = document.createElement('TD');
	tdHeader3.appendChild(document.createTextNode('Last Name'));
	trHeader.appendChild(tdHeader3);
}

function AddGuestRows(container, numberOfRows) {

	//alert('AddGuestRows()... numberOfRows = ' + numberOfRows);
	//alert('AddGuestRows()... _numberOfGuests = ' + _numberOfGuests);

	CreateGuestTableIfNeeded(container);
	var tbody = GetElement(_guestTableBodyID);
	
	for (var rowID = parseInt(_numberOfGuests) + 1; rowID <= parseInt(_numberOfGuests) + parseInt(numberOfRows); rowID++) {
		//alert('AddGuestRows() for loop');
		var tr = document.createElement('TR');
		tr.id = _guestRowIDPrefix + rowID;
		tbody.appendChild(tr);

		//alert('test1');
		
		//First cell
		var td1 = document.createElement('TD');
		td1.width = '100';
		td1.style.textAlign = "right";
		td1.appendChild(document.createTextNode('Guest #' + rowID + ':'));
		tr.appendChild(td1);
		
		//alert('test2');
		
		//Second cell
		var td2 = document.createElement('TD');
		td2.width = '100';
		var inputFirstName = document.createElement('INPUT');
		inputFirstName.id = 'guestFirstName' + rowID;
		inputFirstName.name = 'guestFirstName' + rowID;
		inputFirstName.type = 'text';
		inputFirstName.value = GetGuestCookieValue(rowID, true);
		td2.appendChild(inputFirstName);
		tr.appendChild(td2);
		
		//alert('test3');
		
		//Third cell
		var td3 = document.createElement('TD');
		td3.width = '100';
		var inputLastName = document.createElement('INPUT');
		inputLastName.id = 'guestLastName' + rowID;
		inputLastName.name = 'guestLastName' + rowID;
		inputLastName.type = 'text';
		inputLastName.value = GetGuestCookieValue(rowID, false);
		td3.appendChild(inputLastName);
		tr.appendChild(td3);
	}
}

function RemoveGuestRows(container, numberToRemove) {
	var tbody = GetElement(_guestTableBodyID);
	for (var rowID = _numberOfGuests; rowID > _numberOfGuests - numberToRemove; rowID--) {
		var rowElement = GetElement(_guestRowIDPrefix + rowID);
		tbody.removeChild(rowElement);
	}
}

//-->