﻿var GroupBooking = new function() {


	//setup
	this.Setup = function() {

		var aRadio = f.GetElementsByClassName('input', 'radio');
		for (var i = 0; i < aRadio.length; i++) {
			f.AttachEvent(aRadio[i], 'click', function(oEvent) { GroupBooking.BookingTypeSelect(f.GetObjectFromEvent(oEvent)); });
		}
		
		//if we have come back using the browser back button, we need to check the right things are displayed - the timeout is for IE
		setTimeout('GroupBooking.BookingTypeSelect();', 100);
	}


	//booking type select
	this.BookingTypeSelect = function(oRadioObject) {
	
		//find out which radio button is selected if we weren't handed it.
		var oRadio;
		if (oRadioObject == undefined) {
			var aRadioObjects = f.GetObject('divBookingType').getElementsByTagName('input');
			for ( var i = 0; i < aRadioObjects.length; i++ ) {
				if (cb.Checked(aRadioObjects[i])) {
					oRadio = aRadioObjects[i];
				}
			}
		} else {
			oRadio = oRadioObject;
		}
	
		//show the correct bits
		f.ShowIf('divHotel', oRadio.id.indexOf('Hotel') > -1);
		f.ShowIf('divFlight', oRadio.id.indexOf('Flight') > -1);
		f.ShowIf('divArrivalAirport', oRadio.id.indexOf('FlightPlusHotel') == -1);
	}


	//validate
	this.Validate = function() {
	
		var oValidator = new Validator();

		//Personal Details
		oValidator.AddValidation('ddlTitle', Constants.GroupPageTemplateTitle, 'NotEmpty');
		oValidator.AddValidation('txtFirstName', Constants.GroupPageTemplateFirstName, 'NotEmpty');
		oValidator.AddValidation('txtLastName', Constants.GroupPageTemplateLastName, 'NotEmpty');
		oValidator.AddValidation('txtTelephoneNumber', Constants.GroupPageTemplateTelephoneNumber, 'NotEmpty');
		oValidator.AddValidation('txtEmail', Constants.GroupPageTemplateEmail, 'NotEmpty IsEmail');

		//airports
		if ((this.BookingType() == 'FlightPlusHotel') || (this.BookingType() == 'FlightOnly')) {
		    oValidator.AddValidation('sddDepartureAirportID', Constants.GroupPageTemplateDepartureAirport, 'NotEmpty');
		}
		if (this.BookingType() == 'FlightOnly') {
		    oValidator.AddValidation('sddArrivalAirportID', Constants.GroupPageTemplateArrivalAirport, 'NotEmpty');
		}

		//destination
		if ((this.BookingType() == 'FlightPlusHotel') || (this.BookingType() == 'HotelOnly')) {
		    oValidator.AddValidation('sddGeographyLevel2ID', Constants.GroupPageTemplateGeographyLevel2, 'NotEmpty');
		}

		oValidator.AddValidation('ddlNumberOfNights', Constants.GroupPageTemplateNumberOfNights, 'NotEmpty');
		oValidator.AddValidation('ddlBudgetPerPerson', Constants.GroupPageTemplateBudgetPerPerson, 'NotEmpty');

		oValidator.AddValidation('ddlNumberOfAdults', Constants.GroupPageTemplateNumberOfAdults, 'NotEmpty');
		oValidator.AddValidation('ddlNumberOfChildren', Constants.GroupPageTemplateNumberOfChildren, 'NotEmpty');
		oValidator.AddValidation('ddlNumberOfRooms', Constants.GroupPageTemplateNumberOfRooms, 'NotEmpty');

		oValidator.AddValidation('ddlReasonForTrip', Constants.GroupPageTemplateReasonForTrip, 'NotEmpty');
		oValidator.AddValidation('addMealBasisID', Constants.GroupPageTemplateMealBasis, 'NotEmpty'); 

		//Validate
		if (oValidator.Validate()) {
			
			//check we've got enough people for a group booking.
			var iTotalGuests = dd.GetIntText('ddlNumberOfAdults') + dd.GetIntText('ddlNumberOfChildren');
			if (iTotalGuests < 8) {
			    FormHandler.ShowWarning(Constants.GroupPageTemplateMinimumPaxWarning);
				SetControlValidClass('ddlNumberOfAdults', false);
				SetControlValidClass('ddlNumberOfChildren', false);
				return;
			}
		
			ButtonPostBack(f.GetObject('btnSubmit'));
		}

	}


	//booking type
	this.BookingType = function() {
		if (f.GetObject('radFlightPlusHotel').checked) {
			return 'FlightPlusHotel';
		} else if (f.GetObject('radFlightOnly').checked) {
			return 'FlightOnly';
		} else if (f.GetObject('radHotelOnly').checked) {
			return 'HotelOnly';
		}
	}

}
