
		// Initialise default form variables
		function getDocumentObjects()
		{
			// Load all the default page objects
			oGroupBookingForm = document.getElementById('groupBookingForm');
			
			oSeatsAdult = document.getElementById('seats_adults');
			oSeatsChildren = document.getElementById('seats_children');
			oSeatsStudent = document.getElementById('seats_students');

			// Show the booking form
			oGroupBookingForm.style.display = 'inline';
		}

		function doTotal()
		{	
			var aAdultsInput = new Array(oSeatsAdult, 6);
			var aChildrenInput = new Array(oSeatsChildren, 4);
			var aStudentsInput = new Array(oSeatsStudent, 5);
			
			var aInputs = new Array(aAdultsInput, aChildrenInput, aStudentsInput);

			var aTicketCosts = new Array();
			var sErrorMessage = '';
			var fTotalBookingPrice = 0;
			var iTicketCount = 0;
			
			for (var iCounter = 0; iCounter < aInputs.length; iCounter++)
			{
				if (aInputs[iCounter][0].value != '')
				{
					iNumberOfTickets = aInputs[iCounter][0].value;
					fTicketPrice = aInputs[iCounter][1];

					if (iNumberOfTickets != '')
					{
						var sIntRegEx = /^[0-9]*$/;
				
						if (sIntRegEx.test(iNumberOfTickets))
						{
							var iTotalValue = iNumberOfTickets * fTicketPrice;
							iTicketCount += parseInt(iNumberOfTickets);
							aTicketCosts.push(iTotalValue);
						}
						else
						{
							sErrorMessage = 'You have not entered a valid number in at least on field.\n\n';
							sErrorMessage += 'Please check that you only enter 0-9 and try again.';
							aTicketNumbers.length = 0;
							break;
						}
					}
				}
			}

			if (aTicketCosts.length != 0)
			{
				for (var iCounter = 0; iCounter < aTicketCosts.length; iCounter++)
				{
					fTotalBookingPrice += aTicketCosts[iCounter];
				}
			
				// Update the hidden field totals
				document.getElementById('totalSeatingNumbers').value = iTicketCount;
				document.getElementById('totalSeatingCost').value = fTotalBookingPrice.toFixed(2);
				
				for (var iCounter = 0; iCounter < document.forms[0].candyBarDeal.length; iCounter++)
				{
					if (iCounter == 0) continue;
					else if(document.forms[0].candyBarDeal[iCounter].checked)
					{
						fTotalBookingPrice += parseInt(document.forms[0].candyBarDeal[iCounter].value) * iTicketCount;
					}
				}
				
				// Update the booking view
				document.getElementById('bookingTotal').innerHTML = '<strong>$'+ formatNumber(fTotalBookingPrice.toFixed(2)) +'</strong>';
			}
			else
			{
				document.getElementById('bookingTotal').innerHTML = '';
				document.getElementById('totalSeatingNumbers').value = 0;
			}
		}
		
		function updateTotal(oRadioButton)
		{
			var iTotalSeatingNumbers = document.getElementById('totalSeatingNumbers').value;
			var iTotalSeatingCost = document.getElementById('totalSeatingCost').value;
			var iTotalPrice = parseInt(iTotalSeatingCost) + (oRadioButton.value * iTotalSeatingNumbers);
			
			// Update the booking view
			document.getElementById('bookingTotal').innerHTML = '<strong>$'+ formatNumber(iTotalPrice.toFixed(2)) +'</strong>';

			// Update the hidden field totals
			document.getElementById('totalBookingCost').value = iTotalPrice.toFixed(2);
				
		}

		function formatNumber(iNumber, iDecimalPlaceCount)
		{
			var iNumber; // ARG - The number to format
			var iDecimalPlaceCount; // ARG - The number of decimal places to format to
			
			var fNumber; // The function argument as float
			var aNumber; // An array made of whole number and decimal place
			var sWholeNumber; // The whole number extracted from array as string
			var sDecimalPlaces; // The decimal places from array
			var sSplitNumberRegEx; // The regular expression to split whole number
			
			if (iDecimalPlaceCount)
			{
				fNumber = parseFloat(iNumber).toFixed(iDecimalPlaceCount);
				aNumber = fNumber.toString().split('.');
			}
			else aNumber = iNumber.toString().split('.');
			
			sWholeNumber = aNumber[0];
			sDecimalPlaces = (aNumber.length > 1)? ('.' + aNumber[1]):'';
			
			sSplitNumberRegEx = /(\d+)(\d{3})/;
			
			while (sSplitNumberRegEx.test(sWholeNumber))
			{
				sWholeNumber = sWholeNumber.replace(sSplitNumberRegEx, '$1' + ',' + '$2');
			}
			
			return sWholeNumber + sDecimalPlaces
		}
		
		function validateGroupBooking()
		{
			// Set up the form validator
			oFormValidator = new formValidator();
			
			oFormValidator.addRequired('cineplexSelect', 'Select Cineplex');
			
			oFormValidator.addRequired('movie', 'Movie');
			oFormValidator.addRequired('date_input', 'Date');
			oFormValidator.addRequired('primaryContact', 'Primay Contact');
			oFormValidator.addRequired('organisationName', 'Organisation Name');
			oFormValidator.addRequired('phone_businessHours', 'Business Hours Phone');
			oFormValidator.addRequired('faxNumber', 'Fax Number');
			oFormValidator.addRequired('emailAddress', 'Email Address');
			oFormValidator.addRequired('totalSeatingCost', 'Seating Numbers');
			
			// Validate the form
			var bFormIsValid = oFormValidator.validate(document.getElementById('groupBookingForm'));

			if(bFormIsValid) document.getElementById('groupBookingForm').submit();
		}

		function closeCalendar(calendar)
		{
			var oCalendar = calendar;
			var now = new Date();
			
			var sWarning = 'The date you have selected is in the past!\n\n';
			sWarning += 'You can not add a Booking Date that is in the past.\n';
			sWarning += 'Please select some point in the future.';
			
			if (oCalendar.date.getDate() < now.getDate())
			{
				var oParams = oCalendar.params;
				
				oCalendar.setDate(new Date());
				oParams.displayArea.value = oCalendar.date.print(oParams.daFormat)
				alert(sWarning);
			}
			else oCalendar.hide();
		}
