function ChangePeriodText(){
	var selVal = document.frm.period.options[document.frm.period.selectedIndex].value;
	var obj    = document.getElementById("monthId");
	if (selVal!='NA') obj.innerText = selVal + 's';    
	else obj.innerText = '';    
}  

allChecked = true;
function CheckAll(count) {
	for (i = 0; i < count; i++)
	document.getElementById(i).checked = allChecked ;
	allChecked=(allChecked?false:true);
}

function ShowToolTip(object) {
    document.getElementById(object).style.visibility = 'visible';
}

function HideToolTip(object) {
    document.getElementById(object).style.visibility = 'hidden';
}

// JavaScript Document
var bustcachevar=1; //bust potential caching of external pages after initial request? (1=yes, 0=no)
var bustcacheparameter="";

function ajaxpage(url, containerid, requesttype){
	var page_request = false
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	} else	return false
	page_request.onreadystatechange=function(){
		loadpage(page_request, containerid)
	}
	
	if (requesttype=='get'){
		if (bustcachevar) bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
		page_request.open('GET', url+bustcacheparameter, true)
		page_request.send(null)
	} else if (requesttype=='post') {
		page_request.open('POST', url, true);
		page_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		page_request.setRequestHeader("Content-length", parameters.length);
		page_request.setRequestHeader("Connection", "close");
		page_request.send(parameters);
	};
}

function loadpage(page_request, containerid){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	document.getElementById(containerid).innerHTML=page_request.responseText
}


function getAnchorPosition(anchorname) {
	// This function will return an Object with x and y properties
	var useWindow=false;
	var coordinates=new Object();
	var x=0,y=0;
	// Browser capability sniffing
	var use_gebi=false, use_css=false, use_layers=false;
	if (document.getElementById) { use_gebi=true; }
	else if (document.all) { use_css=true; }
	else if (document.layers) { use_layers=true; }
	// Logic to find position
 	if (use_gebi && document.all) {
		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
		}
	else if (use_gebi) {
		var o=document.getElementById(anchorname);
		x=AnchorPosition_getPageOffsetLeft(o);
		y=AnchorPosition_getPageOffsetTop(o);
		}
 	else if (use_css) {
		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
		}
	else if (use_layers) {
		var found=0;
		for (var i=0; i<document.anchors.length; i++) {
			if (document.anchors[i].name==anchorname) { found=1; break; }
			}
		if (found==0) {
			coordinates.x=0; coordinates.y=0; return coordinates;
			}
		x=document.anchors[i].x;
		y=document.anchors[i].y;
		}
	else {
		coordinates.x=0; coordinates.y=0; return coordinates;
		}
	coordinates.x=x;
	coordinates.y=y;
	return coordinates;
	}

// getAnchorWindowPosition(anchorname)
//   This function returns an object having .x and .y properties which are the coordinates
//   of the named anchor, relative to the window
function getAnchorWindowPosition(anchorname) {
	var coordinates=getAnchorPosition(anchorname);
	var x=0;
	var y=0;
	if (document.getElementById) {
		if (isNaN(window.screenX)) {
			x=coordinates.x-document.body.scrollLeft+window.screenLeft;
			y=coordinates.y-document.body.scrollTop+window.screenTop;
			}
		else {
			x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
			y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
			}
		}
	else if (document.all) {
		x=coordinates.x-document.body.scrollLeft+window.screenLeft;
		y=coordinates.y-document.body.scrollTop+window.screenTop;
		}
	else if (document.layers) {
		x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
		y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
		}
	coordinates.x=x;
	coordinates.y=y;
	return coordinates;
}

// Functions for IE to get position of an object
function AnchorPosition_getPageOffsetLeft (el) {
	var ol=el.offsetLeft;
	while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
	return ol;
}

function AnchorPosition_getWindowOffsetLeft (el) {
	return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
}	

function AnchorPosition_getPageOffsetTop (el) {
	var ot=el.offsetTop;
	while((el=el.offsetParent) != null) { ot += el.offsetTop; }
	return ot;
}

function AnchorPosition_getWindowOffsetTop (el) {
	return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
}

//var ticketsRemaining = -1;
var ticketsRemaining = new Array();
//var maxTickets = -1;
var maxTickets = new Array();
var slotDates = new Array();
var tickets = new Array();
var popWindowResend;
var popWindowMember;
var popWindowBooking;
var popWindowOrder;

/**
 *  init_date
 */
function init_date(day_counter, slot_date)
{
	//alert(slot_date);
	slotDates[day_counter] = slot_date;
	ticketsRemaining[slot_date] = -1;
	maxTickets[slot_date] = -1;
	tickets[slot_date] = new Array();
}
function toggleNumBookings(slot_date, elementId, qty, displayElement, slot_counter, member_index) {
	//alert(' slot_date '+slot_date+' elementId '+elementId+' qty '+qty+' displayElement '+displayElement+' slot_counter '+slot_counter+' member_index '+member_index);
	var elementToToggle = document.getElementById(elementId);
	var elementToSet = document.getElementById(displayElement);
	if (member_index == undefined){
		member_index = -1;
	}

	if (elementToToggle != null) {
		var currentVisibility = elementToToggle.style.display;
		if (currentVisibility.toString() == 'block') {
			elementToToggle.style.display = 'none';
			elementToSet.value = 0;
			tickets[slot_date][slot_counter] = 0;
			ticketsRemaining[slot_date] = maxTickets[slot_date] - sumArray(slot_date);
		} else {
			elementToToggle.style.display = 'block';
			if (maxTickets[slot_date] == -1){
				if (member_index > -1) {	// member has logged in but redisplaying intial screen
					//alert("member has logged in but redisplaying intial screen");
					elementToSet.value = 0;
					maxTickets[slot_date] = qty;
					ticketsRemaining[slot_date] = 0;
					tickets[slot_date][member_index] = maxTickets[slot_date];
				} else {
					maxTickets[slot_date] = qty;
					ticketsRemaining[slot_date] = 0;
					tickets[slot_date][slot_counter] = maxTickets[slot_date];
					elementToSet.value = maxTickets[slot_date];
				}
			} else if (maxTickets[slot_date] == undefined) {	//before login for member
				elementToSet.value = 0;
			} else {
				elementToSet.value = ticketsRemaining[slot_date];
				tickets[slot_date][slot_counter] = ticketsRemaining[slot_date];
				ticketsRemaining[slot_date] = maxTickets[slot_date] - sumArray(slot_date);
			}
		}
	}
}
function reCalc(slot_date, displayElement, slot_counter, qty) {
	//alert("slot_date "+slot_date+" slot_counter "+slot_counter);
	var elementToSet = document.getElementById(displayElement);
	var num = parseInt(elementToSet.value);
	if (maxTickets[slot_date] == -1){
		//alert("member has logged in and changing default value");
		//elementToSet.value = 0;
		maxTickets[slot_date] = qty;
		ticketsRemaining[slot_date] = 0;
		//tickets[slot_date][member_index] = maxTickets[slot_date];
	}
	tickets[slot_date][slot_counter] = num;
	var ticketTotal = sumArray(slot_date);
	if (ticketTotal <= maxTickets[slot_date]){
		ticketsRemaining[slot_date] = maxTickets[slot_date] - ticketTotal;
		elementToSet.value = num;
	} else {
		tickets[slot_date][slot_counter] = 0;
		ticketsRemaining[slot_date] = maxTickets[slot_date] - sumArray(slot_date);
		elementToSet.value = 0;
	}
	//alert("maxTickets[slot_date]"+maxTickets[slot_date]+"ticketsRemaining: "+ticketsRemaining[slot_date]+"  ticketTotal: "+ticketTotal);
}

function sumArray(slot_date){
	var sum = 0;
	for (i = 0; i < 9; i++){
		if(tickets[slot_date][i] != undefined){
			sum += tickets[slot_date][i];
		}
	}
	return sum;
}
var currentCounter = 0;
function addProductSelectionDiv(parentDiv, divId, count) {
	//alert('boo'+count);
	var parentDivElement = document.getElementById(divId + "[0]");
	var newDiv = parentDivElement.cloneNode(true);
	//newDiv.id = divId + "[" + ++currentCounter + "]";
	newDiv.style.display = 'block';
	
	newDiv.id = divId + "[" + ++currentCounter + "]";
	var parentD = document.getElementById(parentDiv);
	parentD.appendChild(newDiv);
}

function removeProductSelectionDiv(event) {
	e = getEvent(event);
	o = e.srcElement;
	if (o == null) {
		// IE prefers srcElement - everyone elses uses the W3C standard of 'target'
		o = e.target;
	}
	
	//if (o.parentNode.parentNode.id == "package_product[0]") {
		//Cannot remove the first node
	//} else {
		// Traverse backwards in an ugly line and remove the entire block
		o.parentNode.parentNode.parentNode.removeChild(o.parentNode.parentNode);
	//}
	//alert(o.parentNode.parentNode.id);
}

function getEvent(e) {
	if (!e) {
		return window.event;
	} else {
		return e;
	}
}
function checkOrderLogin(authorised, slot_date, index){
	//alert('authorised '+authorised+' slot_date '+slot_date+' index '+index);
	if(authorised == 'no'){
		var parms;
		parms = 'slot_date='+slot_date+'&index='+index;
		//parms = stext[id].replace(" ",".")+"&&"+etext[id].replace(" ",".")+"&&"+lock[id]+"&&"+shiftStatus[id]+"&&"+shiftLabel[id].replace(/ /g,".");
		//popWindow = open('resourcemanager/sliderbarset.html?'+parms,'windowName','height = 255,width = 250,toolbar = no,directories = no,status = no,menubar = no,scrollbars = no,resizable = no,modal = yes,dialog = 1');
		popWindowOrder = open('order_login.php?'+parms,'windowName','height = 400,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
		popWindowOrder.focus();
		if (popWindowOrder.opener == null){
			popWindowOrder.opener = self;
			popWindowOrder.focus();
			//alert('mem pop');
		}
	}
	//popWindowOrder.focus();
}
function checkMemberLogin(authorised, slot_date, index){
	//alert(authorised);
	if(authorised == 'no'){
		var parms;
		parms = 'slot_date='+slot_date+'&index='+index;
		//parms = stext[id].replace(" ",".")+"&&"+etext[id].replace(" ",".")+"&&"+lock[id]+"&&"+shiftStatus[id]+"&&"+shiftLabel[id].replace(/ /g,".");
		//popWindow = open('resourcemanager/sliderbarset.html?'+parms,'windowName','height = 255,width = 250,toolbar = no,directories = no,status = no,menubar = no,scrollbars = no,resizable = no,modal = yes,dialog = 1');
		popWindowMember = open('member_login.php?'+parms,'windowName','height = 450,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
	    
		if (popWindowMember.opener == null){
			popWindowMember.opener = self;
			popWindowMember.focus();
			//alert('mem pop');
		}
	}
	popWindowMember.focus();
}
var memberCounter = 0;
function addMemberLoginDiv(parentDiv, divId) {
	var parentDivElement = document.getElementById(divId + "[0]");
	var newDiv = parentDivElement.cloneNode(true);
	newDiv.id = divId + "[" + ++memberCounter + "]";
	var parentD = document.getElementById(parentDiv);
	parentD.appendChild(newDiv);
}
/*
function removeProductSelectionDiv(event) {
	e = getEvent(event);
	o = e.srcElement;
	if (o == null) {
		// IE prefers srcElement - everyone elses uses the W3C standard of 'target'
		o = e.target;
	}
	
	if (o.parentNode.parentNode.id == "member[0]") {
		//Cannot remove the first node
	} else {
		// Traverse backwards in an ugly line and remove the entire block
		o.parentNode.parentNode.parentNode.removeChild(o.parentNode.parentNode);
	}	
}
*/
function reFreshMe(slotDate){
	location.reload();
	//ajaxpage('calendar/date-availability-member.php?dt='+slotDate+'','DateBookings','get');
}
function resendPDF(login_id, rid, membership_number){
	//alert(login_id);
	var member = 0;
	if(membership_number.length > 0){
		member = 1;
	}
	var parms;
	parms = 'login_id='+login_id+'&member='+member+'&rid='+rid+'&membership_number='+membership_number;
	popWindowResend = open('resend_pdf.php?'+parms,'windowName','height = 350,width = 500,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=50,left=650');
	if (popWindowResend.opener == null){
		popWindowResend.opener = self;
	}
	popWindowResend.focus();
}
function showEmailDiv(elementId){
	var elementToToggle = document.getElementById(elementId);
	//var elementToSet = document.getElementById(displayElement);

	if (elementToToggle != null) {
		var currentVisibility = elementToToggle.style.display;
		if (currentVisibility.toString() == 'block') {
			elementToToggle.style.display = 'none';
		} else {
			elementToToggle.style.display = 'block';
		}
	}
}
function closeMe(windowName) {
	if(windowName == 'member_login'){
		var parms;
		//popWindowMember.name = windowName+'.php';
		popWindowMember = open('member_login.php?'+parms,'windowName','height = 450,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
		//popWindowMember = open('member_login.php?');
		popWindowMember.focus();
		//alert(popWindowMember);
		popWindowMember.close();
	} else if(windowName == 'order_login'){
		var parms;
		popWindowBooking = open('order_login.php?'+parms,'windowName','height = 450,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
		popWindowBooking.focus();
		popWindowBooking.close();
	} else if(windowName == 'booking_login'){
		var parms;
		popWindowBooking = open('booking_login.php?'+parms,'windowName','height = 450,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
		popWindowBooking.focus();
		popWindowBooking.close();
	} else {
		popWindowResend.close();
	}
}
function bookingLogin(stype, authorised, slot_date, index){
	//alert(authorised);
	if(authorised == 'no'){
		var parms;
		parms = 'slot_date='+slot_date+'&index='+index+'&stype='+stype;
		//parms = stext[id].replace(" ",".")+"&&"+etext[id].replace(" ",".")+"&&"+lock[id]+"&&"+shiftStatus[id]+"&&"+shiftLabel[id].replace(/ /g,".");
		//popWindow = open('resourcemanager/sliderbarset.html?'+parms,'windowName','height = 255,width = 250,toolbar = no,directories = no,status = no,menubar = no,scrollbars = no,resizable = no,modal = yes,dialog = 1');
		popWindowBooking = open('booking_login.php?'+parms,'windowName','height = 450,width = 600,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=10,left=650');
	    
		if (popWindowBooking.opener == null){
			popWindowBooking.opener = self;
			popWindowBooking.focus();
			//alert('book pop');
		}
		popWindowBooking.focus();
	}
}
function toggleExtraBookings(elementId) {
	var elementToToggle = document.getElementById(elementId);

	if (elementToToggle != null) {
		var currentVisibility = elementToToggle.style.display;
		if (currentVisibility.toString() == 'block') {
			elementToToggle.style.display = 'none';
		} else {
			elementToToggle.style.display = 'block';
		}
	}
}

function confirmActionOnSubmit(button_action) {
	//var grandTotal = parseFloat(document.getElementById('grand_total').innerHTML);
	var total_products = parseFloat(document.getElementById('total_products').innerHTML);
	document.getElementById('select_button').value = button_action;
	var message = 'Are you sure you wish to continue? \n';
	message += 'You are about to '+button_action+' '+total_products+' tickets.\n';
	if (button_action != 'refund')
	{
		message += 'This action cannot be undone.';
		var userResponse = confirm(message);
		if (userResponse) {
			document.ticket_print_form.submit();
		} else {
			// do nothing
		}
	} else { //refund has own checks
		document.ticket_print_form.submit();
	}
}

function reCalcTicketTotal(displayElement, num_slots) {
	//var elementToSet = document.getElementById(displayElement+'['+index+']');
	//var num = parseInt(elementToSet.value);
	//var total_products = parseInt(document.getElementById('total_products').innerHTML, 10);
	var sum = 0;
	for (i = 0; i < num_slots; i++){
		var elementToSet = document.getElementById(displayElement+'['+i+']');
		var num = parseInt(elementToSet.value);
		sum += num;
	}
	//total_products = sum;
	document.getElementById('total_products').innerHTML = sum;
	//alert("total_products: "+total_products);
}
var allCleared = false;
function ClearAll(count) {
	for (i = 0; i < count; i++){
		var elementToSet = document.getElementById('print_amount['+i+']');
		if (!allCleared){
			if (elementToSet != null) {
				elementToSet.value = 0;
			}
		} else {
			var elementToCopy = document.getElementById('unallocated_remainder['+i+']');
			if (elementToCopy != null) {
				elementToSet.value = elementToCopy.value;
			}
		}
	}
	allCleared=(allCleared?false:true);
}

function showMembers(rid){
	var parms;
	parms = 'rid='+rid;
	popWindowShowMembers = open('show_members.php?'+parms,'windowName','height = 300,width = 500,toolbar = no,directories = no,status = no,menubar = no,scrollbars = yes,resizable = no,modal = yes,dialog = 1,top=50,left=650');
	if (popWindowShowMembers.opener == null){
		popWindowShowMembers.opener = self;
	}
	popWindowShowMembers.focus();
}

function calc_remainder(){
	var total_limit = parseInt(document.getElementById('total_limit').value);
	var member_limit = parseInt(document.getElementById('member_limit').value);
	var order_limit = parseInt(document.getElementById('order_limit').value);
	var flexi_limit = parseInt(document.getElementById('flexi_limit').value);
	var remainder = 0;
	remainder = total_limit - member_limit - order_limit - flexi_limit;

	document.getElementById('remainder').value = remainder;
	//alert("remainder: "+remainder);
}

function confirmCancel() {
	var message = 'Are you sure you wish to cancel this booking without saving? \n';
	var userResponse = confirm(message);
	if (userResponse) {
		document.logout_form.submit();
	} else {
		// do nothing
	}
}
function reallocateLimits(){
	
}