//    Last changed:   $Date: 2009-10-07 16:37:05 +0100 (Wed, 07 Oct 2009) $
//    Last change by: $Author: dave $
//    File @ sub rev: $Rev: 6372 $

var page_is_reloading = false;
var page_can_submit = false;
var debug_basket_submit = false;
var csid = '0';
var basket_warning_overdue = '';
var basket_warning_closed = '';
var basket_warning_booked = '';
var basket_warning_default_overdue = 'Not Enough Places ';
var basket_warning_default_closed = 'Booking Closed ';
var basket_warning_default_booked = 'Already Booked ';

function set_site_id(inVal) {
	if( isNaN(inVal) == false ) {
		csid = inVal;
	}
}

function check_warnings() {
	var test1;
	test1 = ''+basket_warning_overdue;
	if( test1.length > 6 ) {
		if( test1.substring(0, 6) == '<!--t:' ) {
			basket_warning_overdue = basket_warning_default_overdue;
		}
	}
	test1 = ''+basket_warning_closed;
	if( test1.length > 6 ) {
		if( test1.substring(0, 6) == '<!--t:' ) {
			basket_warning_closed = basket_warning_default_closed;
		}
	}
	test1 = ''+basket_warning_booked;
	if( test1.length > 6 ) {
		if( test1.substring(0, 6) == '<!--t:' ) {
			basket_warning_booked = basket_warning_default_booked;
		}
	}
}

function check_form() {
	if( page_can_submit == true ) {
		return true;
	} else {
		return false;
	}
}

function booknow(inUrl) {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	document.location = inUrl;
}

function sendfeedbackform() {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	try {
		inForm = document.sendfeedback;
	} catch (err) {
		page_is_reloading = false;
		return;
	}
	if( inForm.feedbackname.value == '' ) {
		alert('Please Enter your Name.');
		page_is_reloading = false;
		return;
	}
	if( inForm.feedbackemail.value == '' ) {
		alert('Please Enter your E-mail address.');
		page_is_reloading = false;
		return;
	}
	if( inForm.feedbackmessage.value == '' ) {
		alert('Please Enter a Feedback Message.');
		page_is_reloading = false;
		return;
	}
	inForm.submit();
}

function calReload(inUrl) {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	document.location = inUrl;
}

function calFormReload(inUrl) {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	try {
		inForm = document.filterclasses;
		inForm.filterOffset.value = 1;
		inForm.calendarDate.checked = true;
		inForm.classDate.value = '';
		inForm.action = inUrl;
	} catch (err) {
		document.location = inUrl;
		return;
	}
	inForm.submit();
}

function calListReload(inUrl) {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	try {
		inForm = document.filterclasses;
		inForm.filterOffset.value = 1;
		inForm.action = inUrl;
	} catch (err) {
		document.location = inUrl;
		return;
	}
	inForm.submit();
}

function formWeekChange() {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	try {
		inForm = document.filterclasses;
		inForm.calendarMonth.checked = false;
	} catch (err) {
		return;
	}
}

function moveResultsDisplay(inChange) {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	try {
		inForm = document.filterclasses;
		inForm.filterOffset.value = Number(inForm.filterOffset.value) + inChange;
	} catch (err) {
		page_is_reloading = false;
		return;
	}
	inForm.submit();
}

function formFilter() {
	var inForm;
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	try {
		inForm = document.filterclasses;
		inForm.filterOffset.value = 1;
	} catch (err) {
		page_is_reloading = false;
		return;
	}
	inForm.submit();
}

function formReload(inForm) {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	inForm.submit();
}


function getTierNum(inId, inDef) {
	var tierDOM = findDOM(inId, 0);
	var retval = inDef;
	if( tierDOM ) {
		var tierVal = tierDOM.value;
		if( tierVal != '' ) {
			if( isNaN(tierVal) == false ) {
				retval = Number(tierVal);
			}
		}
	}
	return retval;
}

function checkTierBooking() {
	var tier_max = getTierNum('ticketmax', 0);
	var tier0num = getTierNum('tier0', 0);
	var tier1num = getTierNum('tier1', 0);
	var tier2num = getTierNum('tier2', 0);
	var tier3num = getTierNum('tier3', 0);
	var tier4num = getTierNum('tier4', 0);
	var tier5num = getTierNum('tier5', 0);
	var tier6num = getTierNum('tier6', 0);
	var totalnum = 0;
	if( tier0num > 0 ) { totalnum+=tier0num; }
	if( tier1num > 0 ) { totalnum+=tier1num; }
	if( tier2num > 0 ) { totalnum+=tier2num; }
	if( tier3num > 0 ) { totalnum+=tier3num; }
	if( tier4num > 0 ) { totalnum+=tier4num; }
	if( tier5num > 0 ) { totalnum+=tier5num; }
	if( tier6num > 0 ) { totalnum+=tier6num; }
	if( tier_max < totalnum ) {
		alert('You\'ve requested more than the number of \navailable tickets, there are '+tier_max+' available.');
		return false;
	}
	if( totalnum < 1 ) {
		alert('No tickets requested.');
		return false;
	}
	return true;
}

function form_add_tier() {
	if( checkTierBooking() == true ) {
		document.tierbooking.returnurl.value=document.location;
		document.tierbooking.submit();
	}
}


// basket functions

function getFieldValue(inForm, inInput)
{
	var fieldValue = '';
	var formField;
	try {
		formField = inForm[inInput];
	} catch (err) {
		try {
			formField = inForm(inInput);
		} catch (err) {
			return fieldValue;
		}
	}
	fieldValue = formField.value;
	if( formField.type == "checkbox" ) {
		if( formField.checked == false ) {
			fieldValue = '';
		}
	}
	return fieldValue;
}

function toLong(inVal) {
	if( isNaN(inVal) == true ) {
		return -1;
	}
	return Number(inVal);
}

function add_tier(inUrl) {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var tierValue = '0';
	var return_url = escape(document.location);
	try {
		var tierChoice = document.tierchoice.tier;
		for( var n=0; n<tierChoice.length; n++ ) {
			if( tierChoice[n].checked == true ) {
				tierValue = tierChoice[n].value;
				n=tierChoice;
			}
		}
	} catch (err) {
		tierValue = '0';
	}
	document.location=inUrl+'&itemextra='+tierValue+'&return_url='+return_url;
}

function add_item() {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var bform = document.basket_form;
	var itemStr = escape(bform.add_text.value);
	var itemQty = escape(bform.add_quantity.value);
	document.location = 'sb_process.asp?action=add&itemstr='+itemStr+'&itemqty='+itemQty+'&cSiteGuId='+csid;
}

function remove_item(inNum) {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var itemDOM = findDOM('key_'+inNum, 0);
	var extraDOM = findDOM('extra_'+inNum, 0);
	var promoDOM = findDOM('usepromo_'+inNum, 0);
	if( itemDOM && extraDOM ) {
		var itemStr = escape(itemDOM.value);
		var extraStr = escape(extraDOM.value);
		var bform = document.basket_items;
		if( promoDOM ) {
			bform.action = 'sb_process.asp?action=remove&itemstr='+itemStr+'&itemextra='+extraStr+'&cSiteGuId='+csid+'&itemusep=1';
		} else {
			bform.action = 'sb_process.asp?action=remove&itemstr='+itemStr+'&itemextra='+extraStr+'&cSiteGuId='+csid;
		}
		page_can_submit = true;
		bform.submit();
	} else {
		page_is_reloading = false;
	}
}

function update_items() {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var bform = document.basket_items;
	page_can_submit = true;
	bform.submit();
}

function removeall_items() {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var retval = confirm('Remove all items from the Basket ?');
	if( retval == true ) {
		var bform = document.basket_items;
		bform.action = 'sb_process.asp?action=removeall&itemstr=0&cSiteGuId='+csid;
		page_can_submit = true;
		bform.submit();
	} else {
		page_is_reloading = false;
	}
}

function reload_items() {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var new_loc = document.location;
	document.location = new_loc;
}


function get_multi_quantity(inID) {
	var bForm = findDOM('basket_items', 0);
	var noOfElements;
	var currentElement;
	var currentEleName;
	var baseS = 'quantity_';
	var baseK = 'key_';
	var idVal = ''+inID;
	var idNum;
	var ignoreID;
	var itemDOM;
	var tmpId;
	var keyDOM;
	var qtyDOM;
	var tmpQty;
	var n;
	var qty = 0;
	if( bForm ) {
		noOfElements = bForm.elements.length;
		idNum = idVal.substr(baseS.length);
		ignoreID = baseK+idVal.substr(baseS.length);
		itemDOM = findDOM(ignoreID, 0);
		if( itemDOM ) {
			for( n=0; n<noOfElements; n++ ) {
				currentElement = bForm.elements[n];
				if( currentElement.type == 'hidden' ) {
					currentEleName = currentElement.name;
					if( currentEleName.length > baseK.length ) {
						if( currentEleName.substr(0, baseK.length) == baseK ) {
							if( currentEleName != ignoreID ) {
								tmpId = currentEleName.substr(baseK.length);
								if( isNaN(tmpId) == false ) {
									keyDOM = findDOM(currentEleName, 0);
									if( keyDOM ) {
										if( keyDOM.value == itemDOM.value ) {
											qtyDOM = findDOM(baseS+tmpId, 0);
											if( qtyDOM ) {
												tmpQty = qtyDOM.value;
												if( isNaN(tmpQty) == false ) {
													tmpQty = Number(tmpQty);
													if( tmpQty > 0 ) {
														qty+=tmpQty;
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	return qty;
}


function update_multi_from_id(inIDNum, inWarning, inLimit) {
	var bForm = findDOM('basket_items', 0);
	var noOfElements;
	var currentElement;
	var currentEleName;
	var currentEleVal;
	var baseK = 'key_';
	var idName;
	var idDOM;
	var passedValue;
	var tmpId;
	var n;
	if( bForm ) {
		noOfElements = bForm.elements.length;
		idName = baseK+inIDNum;
		idDOM = findDOM(idName, 0);
		if( idDOM ) {
			passedValue = idDOM.value;
			for( n=0; n<noOfElements; n++ ) {
				currentElement = bForm.elements[n];
				if( currentElement.type == 'hidden' ) {
					currentEleName = currentElement.name;
					if( currentEleName.length > baseK.length ) {
						if( currentEleName.substr(0, baseK.length) == baseK ) {
							currentEleVal = currentElement.value;
							if( currentEleVal == passedValue ) {
								tmpId = currentEleName.substr(baseK.length);
								if( isNaN(tmpId) == false ) {
									set_multi_warnings(tmpId, inWarning, inLimit);
								}
							}
						}
					}
				}
			}
		}
	}
}


function set_multi_warnings(inIDNum, inWarning, inLimit) {
	var baseS = 'quantity_';
	var baseP = 'placestext_';
	var newId;
	var newDom;
	var changeId;
	var changeDom;
	var warningTxt = basket_warning_overdue;
	newId = baseS+inIDNum;
	newDom = findDOM(newId, 0);
	changeId = baseP+inIDNum;
	changeDom = findDOM(changeId, 0);
	try {
		if( inWarning == true ) {
			if( csid != '0' ) {
				warningTxt += "<br />(" + inLimit + " available)";
			}
			changeDom.innerHTML = warningTxt;
			newDom.style.background = '#ef1010';
		} else {
			changeDom.innerHTML = '';
			newDom.style.background = '#ffffff';
		}
	} catch (err) {
		return;
	}
}


function quantity_change(inID) {
	var baseS = 'quantity_';
	var idVal = ''+inID;
	var idNum;
	var newId;
	var newDom;
	var newVal;
	var chkId;
	var chkDom;
	var chkVal;
	var multiVal;
	var showWarning = false;
	if( idVal.length <= baseS.length ) {
		return;
	}
	if( idVal.substr(0, baseS.length) != baseS ) {
		return;
	}
	idNum = idVal.substr(baseS.length);
	if( isNaN(idNum) == true ) {
		return;
	}
	idNum = Number(idNum);
	newId = inID;
	newDom = findDOM(newId, 0);
	newVal = newDom.value;
	chkId = 'placesleft_'+idNum;
	chkDom = findDOM(chkId, 0);
	chkVal = chkDom.value;
	if( isNaN(newVal) == true ) {
		return;
	}
	newVal = Number(newVal);
	if( isNaN(chkVal) == true ) {
		// ensure chkVal is less than newVal
		chkVal = newVal - 1;
	}
	multiVal = get_multi_quantity(inID);
	newVal+=multiVal;
	if( newVal > 0 ) {
		if( chkVal < newVal ) {
			showWarning = true;
		}
	}
	update_multi_from_id(idNum, showWarning, chkVal);
}


function submit_items() {
	if( page_is_reloading == true ) {
		return;
	}
	page_is_reloading = true;
	var cancel_submit = false;
	var cancel_count = 0;
	var bform = document.basket_items;
	var max_n = bform.item_count.value;

	// nothing in the basket
	if( max_n < 0 ) {
		alert('Basket is empty.');
		page_is_reloading = false;
		return;
	}

	for( var n=0; n<=max_n; n++ ) {
		var cur_key = getFieldValue(bform, 'key_'+n);
		var cur_qty = toLong(getFieldValue(bform, 'quantity_'+n));
		var cur_lft = toLong(getFieldValue(bform, 'placesleft_'+n));
		if( cur_qty > 0 ) {
			if( cur_lft < cur_qty ) {
				cancel_submit = true;
				cancel_count++;
			}
		}
	}

	if( cancel_submit == true ) {
		if( cancel_count > 1 ) {
			alert('Some bookings are for more than the available number of places.');
		} else {
			alert('One booking is for more than the available number of places.');
		}
	}

	// one or more basket quantities more than places left
	if( cancel_submit == true && debug_basket_submit == false ) {
		page_is_reloading = false;
		return;
	}

	// basket seems ok - submit to process script
	bform.action = 'process_basket.asp?cSiteGuId='+csid;
	page_can_submit = true;
	bform.submit();
}
