/*
	functions for jongleurs booking system.
	included are ajax functions + booking process validation.
	jbm
*/
var errorFgColor = '#971b1e';
var errorBgColor = '#e0cacd';


function setFocus(el){document.getElementById(el).focus();}
function updateValues(e,add,price){
	var e2 = document.getElementById(e); var num = parseInt(e2.value);
	if(isNaN(num)) num = 0;
	num = num + add;
	if(num < 0) num = 0;
	e2.value = (num==0?'':num);

	var t = document.getElementById('formType').value;	

	if(t == 'food')
		makeFoodTable();
	else if(t == 'drink')
		makeDrinkTable();
	else if(t == 'celebration')
		makeCelebrationTable();
		
	ajaxDiscountInfo(t);
}

function updateBasket() {
	var t = document.getElementById('formType').value;	

	if(t == 'food')
		makeFoodTable();
	else if(t == 'drink')
		makeDrinkTable();
	else if(t == 'celebration')
		makeCelebrationTable();
		
	ajaxDiscountInfo(t);
}




String.prototype.pad = function(l, s, t){
    return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
        + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
        + this + s.substr(0, l - t) : this;
};
function insertResult(str,target2,field2){
	var target = document.getElementById(target2);
	var field = document.getElementById(field2);
	field.value = str;
	target.innerHTML = '';
	target.style.display = 'none';
}
function is_array( mixed_var ) { return ( mixed_var instanceof Array ); }
Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}
function array_key_exists ( key, search ) {
	if( !search || (search.constructor !== Array && search.constructor !== Object) ){
		return false;
	}
	return key in search;
}
function intval( mixed_var, base ) {
 var tmp;
 if( typeof( mixed_var ) == 'string' ){
 tmp = parseInt(mixed_var*1);
 if(isNaN(tmp) || !isFinite(tmp)){
 return 0;
 } else{
 return tmp.toString(base || 10);
 }
 } else if( typeof( mixed_var ) == 'number' && isFinite(mixed_var) ){
 return Math.floor(mixed_var);
 } else{
 return 0;
 }
}
function isForCompany(){
	if(document.getElementById('company').value == 'yes') document.getElementById('companyName').style.display = '';
	else document.getElementById('companyName').style.display = 'none';
}
function checkPartySize(){
	var wrapper = document.getElementById('seatsValues');
	var bookingFor = document.getElementById('bookingFor').value;
	var inputs = wrapper.getElementsByTagName('input');
	var tickets = 0;
	for(var i = 0; i < inputs.length; i++) { tickets += Math.floor(inputs[i].value); }
}
var bookedTickets = new Array();
function checkTicketEntry(id2,capacity) {
	var input = document.getElementById(id2);
	if(Math.floor(input.value) > capacity) {
		input.style.color = errorFgColor;
		input.style.backgroundColor = errorBgColor;
		alert('You have selected more tickets then are available for this show');
		return false;
	} else {
		var id = input.id.substr(5);
		bookedTickets[id] = new Array(id, Math.floor(input.value));
	}

	makeTicketsTable();
	input.style.color = '';
	input.style.backgroundColor = '';
	checkPartySize();
	return true;
}
function makeFoodTable() {
	var wrapper = document.getElementById('allProducts');
	var inputs = wrapper.getElementsByTagName('input');
	var html = '';
	var total = parseFloat(document.getElementById('currentTotal').value);
	for(var i = 0; i < inputs.length; i++) { 
		if(inputs[i].type == 'text'){
			if(Math.floor(inputs[i].value) > 0){
				html += '<tr><td>'+options[inputs[i].id.substr(1)][0]+'</td><td class="alignRight">'+Math.floor(inputs[i].value)+'&nbsp;&times;&nbsp;&pound;'+number_format(parseFloat(options[inputs[i].id.substr(1)][1]),2)+'</td></tr>\n';
				total += Math.floor(inputs[i].value)*parseFloat(options[inputs[i].id.substr(1)][1]);
			}
		}
	}
	if(html.length > 0){
		document.getElementById('productsFoodDiv').style.display='block';
		document.getElementById('productsFoodDiv').innerHTML = '<h4>Food</h4>'+br+'<table cellspacing="0" cellpadding="0" border="0">'+html+'</table>';
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	} else {
		document.getElementById('productsFoodDiv').innerHTML = '';
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	}

	document.getElementById('hiddenTotal').value = number_format(total,2);

}

function makeDrinkTable() {
	var wrapper = document.getElementById('allProducts');
	var inputs = wrapper.getElementsByTagName('input');
	var html = '';
	var total = parseFloat(document.getElementById('currentTotal').value);
	for(var i = 0; i < inputs.length; i++) { 
		if(inputs[i].type == 'text'){
			if(Math.floor(inputs[i].value) > 0){
				html += '<tr><td>'+options[inputs[i].id.substr(1)][0]+'</td><td class="alignRight">'+Math.floor(inputs[i].value)+'&nbsp;&times;&nbsp;&pound;'+number_format(parseFloat(options[inputs[i].id.substr(1)][1]),2)+'</td></tr>\n';
				total += Math.floor(inputs[i].value)*parseFloat(options[inputs[i].id.substr(1)][1]);
			}
		}
	}
	if(html.length > 0){

		document.getElementById('productsDrinkDiv').style.display='block';
		document.getElementById('productsDrinkDiv').innerHTML = '<h4>Drinks</h4>'+br+'<table cellspacing="0" cellpadding="0" border="0">'+html+'</table>';
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	} else {

		document.getElementById('productsDrinkDiv').style.display='none';
		document.getElementById('productsDrinkDiv').innerHTML = html;
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	}

	document.getElementById('hiddenTotal').value = number_format(total,2);
}

function makeCelebrationTable() {
	var wrapper = document.getElementById('allProducts');
	var inputs = wrapper.getElementsByTagName('input');
	var html = '';
	var total = parseFloat(document.getElementById('currentTotal').value);
	for(var i = 0; i < inputs.length; i++) { 
		if(inputs[i].type == 'text'){
			if(Math.floor(inputs[i].value) > 0){
				html += '<tr><td>'+options[inputs[i].id.substr(1)][0]+'</td><td class="alignRight">'+Math.floor(inputs[i].value)+'&nbsp;&times;&nbsp;&pound;'+number_format(parseFloat(options[inputs[i].id.substr(1)][1]),2)+'</td></tr>\n';
				total += Math.floor(inputs[i].value)*parseFloat(options[inputs[i].id.substr(1)][1]);
			}
		}
	}
	if(html.length > 0){

		document.getElementById('productsCelebrationDiv').style.display='block';
		document.getElementById('productsCelebrationDiv').innerHTML = '<h4>Celebration Products</h4>'+br+'<table cellspacing="0" cellpadding="0" border="0">'+html+'</table>';
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	} else {

		document.getElementById('productsCelebrationDiv').innerHTML = html;
		document.getElementById('productsCelebrationDiv').style.display='none';
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);
	}

	document.getElementById('hiddenTotal').value = number_format(total,2);
}



var hr = '<div class="horizontalRule"><hr /></div>';
var br = '<div class="break"></div>';

function makeTicketsTable() {
	var wrapper = document.getElementById('seatsValues');
	var inputs = wrapper.getElementsByTagName('input');
	var html = '';
	var totaltickets = 0;
	var total = parseFloat(document.getElementById('currentTotal').value);
	for(var i = 0; i < inputs.length; i++) { 
		if(Math.floor(inputs[i].value) > 0){
			html += '<tr><td>'+tickets[inputs[i].id.substr(5)][0]+'</td><td class="alignRight">'+Math.floor(inputs[i].value)+' &times; £'+number_format(parseFloat(tickets[inputs[i].id.substr(5)][1]),2)+'</td></tr>\n';
			totaltickets += Math.floor(inputs[i].value);
			total += Math.floor(inputs[i].value)*parseFloat(tickets[inputs[i].id.substr(5)][1]);
			
		}
	}
	for(var i = 0; i < inputs.length; i++) { 
		if(Math.floor(inputs[i].value) == 0 && totaltickets > 0) {
			inputs[i].disabled = true;
			addClass(inputs[i],'disabled');
		} else {
			inputs[i].disabled = false;
			removeClass(inputs[i],'disabled');
		}
	}
	bookingFee = totaltickets * parseFloat(document.getElementById('bookingFeeValue').value);
	total += bookingFee;
	
	if(html.length > 0){
		//document.getElementById('totalNumber').innerHTML = '&pound;'+number_format(total,2);

		document.getElementById('ticketsDiv').style.display='block';
		document.getElementById('ticketsDiv').innerHTML = '<table cellspacing="0" cellpadding="0" border="0">'+html+'</table>';

		document.getElementById('bookingFeeDiv').style.display='block';
		document.getElementById('bookingFeeDiv').innerHTML = hr+'<table cellspacing="0" cellpadding="0" border="0"><tr><td class="strong">Booking Fee</td><td class="alignRight">&pound;'+number_format(bookingFee,2)+'</td></tr></table>';
	} else {

		document.getElementById('totalNumber').innerHTML = '&pound;0';

		document.getElementById('ticketsDiv').innerHTML = '';
		document.getElementById('ticketsDiv').style.display='none';

		document.getElementById('bookingFeeDiv').innerHTML = '';
		document.getElementById('bookingFeeDiv').style.display='none';
	}
	
	document.getElementById('hiddenTotal').value = number_format(total,2);
	
	ajaxDiscountInfo('ticket');
}
function checkDeposit(element){
	if(document.getElementById('paymentDeposit').checked) {
		if(Math.floor(element.value) < minDeposit) {
			element.style.color = errorFgColor;
			element.style.backgroundColor = errorBgColor;
			alert('You must pay a deposit of at least £' + minDeposit);
			return false;
		}
		element.style.color = '';
		element.style.backgroundColor = '';
	}
	return true;
}
function validateTicketsForm() {
	var bookingFor = document.getElementById('bookingFor');
	var wrapper = document.getElementById('seatsValues');
	var inputs = wrapper.getElementsByTagName('input');
	var isCompany = document.getElementById('company');
	var companyName = document.getElementById('companyName');
	var options = bookingFor.childNodes;
	var companyOptions = isCompany.childNodes;
	var alerts = '';
	var tickets = 0;
	for(var i = 0; i < inputs.length; i++) { tickets += Math.floor(inputs[i].value); }
	if(tickets == 0) {
		for(i = 0; i < inputs.length; i++) {
			inputs[i].style.color=errorFgColor;
			inputs[i].style.backgroundColor=errorBgColor;
		}
		alerts += '* Please tell us how many tickets you\'d like to book\n';
	} else {
		for(i = 0; i < inputs.length; i++) {
			inputs[i].style.color='';
			inputs[i].style.backgroundColor='';
		}
	}
	if(bookingFor.value == '') {
		alerts += '* Please indicate who this booking is for\n';
		bookingFor.style.color = errorFgColor;
		bookingFor.style.backgroundColor = errorBgColor;
		for(var i = 0; i < options.length; i++) {
			options[i].style.color = errorFgColor;
			options[i].backgroundColor = errorBgColor;
		}
	} else {
		bookingFor.style.color = '';
		bookingFor.style.backgroundColor = '';
		for(var i = 0; i < options.length; i++) {
			options[i].style.color = '';
			options[i].backgroundColor = '';
		}
		if(
			(
				(bookingFor.value == 'both' && tickets > 35) 
				||
				(bookingFor.value == 'male' && tickets > 15)
				||
				(bookingFor.value == 'female' && tickets > 15)
			)
			&&
			isCompany.value == ''
		) {

			alerts += '* Please tell us if this booking is for a company\n';
			for(i = 0; i < companyOptions.length; i++) {
				companyOptions[i].style.color = errorFgColor;
				companyOptions[i].backgroundColor = errorBgColor;
			}
			isCompany.style.color = errorFgColor;
			isCompany.style.backgroundColor = errorBgColor;
		} else if (
			(
				(bookingFor.value == 'both' && tickets > 35) 
				||
				(bookingFor.value == 'male' && tickets > 15)
				||
				(bookingFor.value == 'female' && tickets > 15)
			)
			&&
			isCompany.value == 1
			&&
			companyName.value == ''
		) {
			alerts += '* Please tell us which company this booking is for\n';
			companyName.style.color = errorFgColor;
			companyName.backgroundColor = errorBgColor;
		} else {
			for(i = 0; i < companyOptions.length; i++) {
				companyOptions[i].style.color = '';
				companyOptions[i].backgroundColor = '';
			}
			isCompany.style.color = '';
			isCompany.style.backgroundColor = '';
			companyName.style.color = '';
			companyName.backgroundColor = '';
		}
	}
	if(alerts.length > 0) {
		alert ('Please check the errors we have detected:\n' + alerts);
		return false;
	}
	return true;
}
function validateFoodForm(){
	var tickets = Math.floor(document.getElementById('numTickets').value);
	return true;
}
function validatePaymentForm() {
	var cardType = document.getElementById('cardType');
	var cardTypes = cardType.childNodes;
	var cardNumber = document.getElementById('cardNumber');
	var cardHolder = document.getElementById('cardholder');
	var cardHolderTel = document.getElementById('cardholderTel');
	var expiryM = document.getElementById('dateExpiry');
	var expiryY = document.getElementById('dateExpiryY');
	var issueNumber = document.getElementById('issueNumber');
	var startM = document.getElementById('dateStart');
	var startY = document.getElementById('dateStartY');
	var cvv2 = document.getElementById('cvv2');
	var alerts = '';
	var i;
	if(cardType.value == '') {
		for(i = 0; i < cardTypes.length; i++ ) {
			cardType.style.color = errorFgColor;
			cardType.style.backgroundColor = errorBgColor;
			cardTypes[i].style.color = errorFgColor;
			cardTypes[i].style.backgroundColor = errorBgColor;
		}
		alerts += '* Please select the type of card you will be paying with\n';
	} else {
		for(i = 0; i < cardTypes.length; i++ ) {
			cardType.style.color = '';
			cardType.style.backgroundColor = '';
			cardTypes[i].style.color = '';
			cardTypes[i].style.backgroundColor = '';
		}
	}
	if(cardNumber.value == '') {
		cardNumber.style.color = errorFgColor;
		cardNumber.style.backgroundColor = errorBgColor;
		alerts += '* Please provide your credit/debit card number\n';
	} else {
		cardNumber.style.color = '';
		cardNumber.style.backgroundColor = '';
	}
	if(cardHolder.value == '') {
		cardHolder.style.color = errorFgColor;
		cardHolder.style.backgroundColor = errorBgColor;
		alerts += '* Please ensure you have entered the card holder\'s name\n';
	} else {
		cardHolder.style.color = '';
		cardHolder.style.backgroundColor = '';
	}
	if(cardHolderTel.value == '') {
		cardHolderTel.style.color = errorFgColor;
		cardHolderTel.style.backgroundColor = errorBgColor;
		alerts += '* Please ensure you have entered the card holder\'s telephone number\n';
	} else {
		cardHolderTel.style.color = '';
		cardHolderTel.style.backgroundColor = '';
	}
	var expiryMOptions = expiryM.childNodes;
	var expiryYOptions = expiryY.childNodes;
	if(expiryM.value == '' || expiryY.value == '') {
		for(i = 0; i < expiryMOptions.length; i++) {
			expiryMOptions[i].style.color = errorFgColor;
			expiryMOptions[i].style.backgroundColor = errorBgColor;
		}
		for(i = 0; i < expiryYOptions.length; i++) {
			expiryYOptions[i].style.color = errorFgColor;
			expiryYOptions[i].style.backgroundColor = errorBgColor;
		}
		expiryM.style.color = errorFgColor;
		expiryM.style.backgroundColor = errorBgColor;
		expiryY.style.color = errorFgColor;
		expiryY.style.backgroundColor = errorBgColor;
		alerts += '* Please ensure you have completed the card expiry date\n';
	} else {
		for(i = 0; i < expiryMOptions.length; i++) {
			expiryMOptions[i].style.color = '';
			expiryMOptions[i].style.backgroundColor = '';
		}
		for(i = 0; i < expiryYOptions.length; i++) {
			expiryYOptions[i].style.color = '';
			expiryYOptions[i].style.backgroundColor = '';
		}
		expiryM.style.color = '';
		expiryY.style.backgroundColor = '';
		expiryY.style.color = '';
		expiryY.style.backgroundColor = '';
	}
	if(cvv2.value == '') {
		cvv2.style.color=errorFgColor;
		cvv2.style.backgroundColor = errorBgColor;
		alerts += '* Please make sure you have entered your card\'s CVV2 number\n';	
	} else {
		cvv2.style.color='';
		cvv2.style.backgroundColor = '';
	}
	if(alerts.length > 0) {
		alert ('Please check the errors we have detected:\n' + alerts);
		return false;
	}
	return true;
}
function showSearchForm(element){
	var target = document.getElementById('showSearchSmall');
	var d = document.getElementById(element);
	if(target.style.display == 'none') {
		target.style.display = '';
		addClass(d,'on');
	} else {
		target.style.display = 'none';
		removeClass(d,'on');
	}
}

function validateShowSearch() { return true; }

function MultiInput(instance,el,tableClass){
	this.instanceName = instance;
	tbl = document.createElement("table");
	tbl.className = tableClass;
	this.tBody = document.createElement("tbody");
	tbl.appendChild(this.tBody);
	
	this.input = document.createElement("input");
	this.input.type = "text";
	this.input.className = 'text';
	this.input.name = el.name;
	values = el.value.split(/\s+/);

	this.addLink = document.createElement("a");
	this.addLink.className = "add";
	this.addLink.innerHTML = "<span>+</span>";
	this.addLink.href = "#";
	this.removeLink = document.createElement("a");
	this.removeLink.className = "remove";
	this.removeLink.innerHTML = "<span>&minus;</span>";
	this.removeLink.href = "#";
	this.tr = document.createElement("tr");
	this.tr.appendChild(document.createElement("td"));
	this.tr.appendChild(document.createElement("td"));
	this.tr.appendChild(document.createElement("td"));
	this.tr.childNodes[0].appendChild(this.input);
	this.tr.childNodes[1].appendChild(this.addLink);
	this.tr.childNodes[2].appendChild(this.removeLink);
	
	if(values.length > 0){
		for(var i = 0; i < values.length; i++){
			this.addRow(false,values[i]);
		}		
	}else this.addRow(false,false);
	
	el.parentNode.replaceChild(tbl,el);
}
MultiInput.prototype.tBody;
MultiInput.prototype.input;

MultiInput.prototype.removeRow = function(rowIndex){
	if(this.tBody.childNodes.length > 1){
		this.tBody.removeChild(this.tBody.childNodes[rowIndex]);
	}
	this.refreshNames();
}
MultiInput.prototype.addRow = function(insertAfter,value){
	tr = this.tr.cloneNode(true);
	if(value != false){
		tr.childNodes[0].childNodes[0].value = value;
	}
	if(insertAfter === false || this.tBody.childNodes.length==0 || insertAfter==(this.tBody.childNodes.length-1)){
		this.tBody.appendChild(tr);
	}
	else{
		this.tBody.insertBefore(tr,this.tBody.childNodes[insertAfter+1]);
	}
	this.refreshNames();
}
MultiInput.prototype.refreshNames = function(){
	for(var i = 0; i < this.tBody.childNodes.length; i++){
		this.tBody.childNodes[i].childNodes[0].childNodes[0].name = this.input.name+"["+i+"]";
		this.tBody.childNodes[i].childNodes[1].childNodes[0].onclick = new Function(this.instanceName+".addRow("+i+",false);return false;");
		this.tBody.childNodes[i].childNodes[2].childNodes[0].onclick = new Function(this.instanceName+".removeRow("+i+");return false;");
	}
}
function MultiSelect(instance,el,tableClass,noneText){
	if(!noneText)noneText = "None";
	this.instanceName = instance;
	tbl = document.createElement("div");
	tbl.className = tableClass;
	this.tBody = document.createElement("div");
	tbl.appendChild(this.tBody);
	
	this.select = document.createElement("select");
	this.select.name = el.name;
	selected = new Array();
	opt = document.createElement("option");
	opt.value = "";
	opt.innerHTML = noneText;
	this.select.appendChild(opt);
	for(i = 0; i < el.options.length; i++){
		if(el.options[i].selected)selected[selected.length] = i+1;
		opt = document.createElement("option");
		opt.value = el.options[i].value;
		opt.innerHTML = el.options[i].innerHTML;
		this.select.appendChild(opt);
	}
	this.addLink = document.createElement("a");
	this.addLink.className = "add";
	this.addLink.innerHTML = "<span>+</span>";
	this.addLink.href = "#";
	this.removeLink = document.createElement("a");
	this.removeLink.className = "remove";
	this.removeLink.innerHTML = "<span>&minus;</span>";
	this.removeLink.href = "#";
	this.tr = document.createElement("div");
	this.tr.className = 'multiSelectBox';
	this.tr.appendChild(document.createElement("div"));
	this.tr.childNodes[0].appendChild(this.select);
	this.tr.appendChild(this.addLink);
	this.tr.appendChild(this.removeLink);
	
	if(selected.length > 0){
		for(var i = 0; i < selected.length; i++){
			this.addRow(false,selected[i]);
		}		
	}else this.addRow(false,false);
	
	el.parentNode.replaceChild(tbl,el);
}
MultiSelect.prototype.tBody;
MultiSelect.prototype.select;

MultiSelect.prototype.removeRow = function(rowIndex){
	if(this.tBody.childNodes.length > 1){
		this.tBody.removeChild(this.tBody.childNodes[rowIndex]);
	}
	this.refreshNames();
}
MultiSelect.prototype.addRow = function(insertAfter,selectedIndex){
	tr = this.tr.cloneNode(true);
	if(selectedIndex != false){
		tr.childNodes[0].childNodes[0].selectedIndex = selectedIndex;
	}
	if(insertAfter === false || this.tBody.childNodes.length==0 || insertAfter==(this.tBody.childNodes.length-1)){
		this.tBody.appendChild(tr);
	}
	else{
		this.tBody.insertBefore(tr,this.tBody.childNodes[insertAfter+1]);
	}
	this.refreshNames();
}
MultiSelect.prototype.refreshNames = function(){
	for(var i = 0; i < this.tBody.childNodes.length; i++){
		this.tBody.childNodes[i].childNodes[0].childNodes[0].name = this.select.name+"["+i+"]";
		this.tBody.childNodes[i].childNodes[1].childNodes[0].onclick = new Function(this.instanceName+".addRow("+i+",false);return false;");
		this.tBody.childNodes[i].childNodes[2].childNodes[0].onclick = new Function(this.instanceName+".removeRow("+i+");return false;");
	}
}
var thisPane = 'productsFood';
var thisSelect = 'selectFood';

var products = new Array();

function checkFoodSelect(selected){
	var select = document.getElementById('foodSelect');
	for(var i = 0; i < select.childNodes.length; i++){
		if(select.childNodes[i].id == selected) {
			select.childNodes[i].className = 'on';
		} else {
			select.childNodes[i].className = 'off';
		}
	}
}
function setTab(paneOn,tabOn,buttonOn){
	document.getElementById('productsFood').style.display = 'none';
	document.getElementById('productsDrinks').style.display = 'none';
	document.getElementById('productsCelebrations').style.display = 'none';
	document.getElementById(paneOn).style.display = 'block';
	checkFoodSelect(tabOn);
	document.getElementById('avanti').className = 'button '+buttonOn;
	thisPane = paneOn;
	return false;
}
function showPasswordForm() {
	var lForm = document.getElementById('loginForm');
	var pForm = document.getElementById('passwordForm');

	var lField = document.getElementById('loginEmail');
	var pField = document.getElementById('passwordEmail');

	
	if(lForm.style.display == '') {
		lForm.style.display = 'none';
		pForm.style.display = '';
		pField.value = lField.value;		
	} else if (lForm.style.display == 'none') {
		lForm.style.display = '';
		pForm.style.display = 'none';
	}
	return false;
}

function createPCA(){
	$('#jsPCA').css('display','block');
}
function closePCA(){
	$('#pcaSelect').hide();
}
function number_format( number, decimals, dec_point, thousands_sep ) {
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}


function hasClass(ele,cls)
{
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls)
{
	if (!hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls)
{
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}
function show(e) { document.getElementById(e).style.display = ''; }
function hide(e) { document.getElementById(e).style.display = 'none'; }



function checkOfferCode(show,booking){

	var o = document.getElementById('offerCodeInput');
	var d = document.getElementById('offerCodeData');
	var d2 = document.getElementById('offerDescription');
	if(o.value.length > 2){
		ajaxRead('/ajax?action=checkOfferCode&code='+escape(o.value)+'&show='+booking+'&amp;_frameset=true',d);
		ajaxRead('/ajax?action=describeOfferCode&code='+escape(o.value)+'&show='+booking+'&amp;_frameset=true',d2);
	}
	else 
		d.innerHTML = '';

	ajaxDiscountInfo('ticket');
}




function sendPasswordReminder(){
	document.passwordReminderForm.submit();
}