function showhide(show,hide)
{
document.getElementById(hide).style.display='none';
document.getElementById(show).style.display='inline';
}

function showhideblock(show,hide)
{
document.getElementById(hide).style.display='none';
document.getElementById(show).style.display='block';
}

function show(element)
{
	document.getElementById(element).style.display='inline';
}

function showblock(element)
{
	document.getElementById(element).style.display='block';
}

function hide(element) {
	document.getElementById(element).style.display='none';
}

function settext(text,box)
{
document.getElementById(box).value=text;
}

function textinputsize(input) {
	if(document.getElementById(input).value.length>90) {
		document.getElementById(input).size=100;
	}
	else if(document.getElementById(input).value.length<3) {
		document.getElementById(input).size=3;
	}
	else {
	document.getElementById(input).size=document.getElementById(input).value.length+Math.round(document.getElementById(input).value.length/15);
	}
}

function textareaheight(textarea) {
	document.getElementById(textarea).style.height = 0;
	if(document.getElementById(textarea).scrollHeight<30) {
		document.getElementById(textarea).style.height = "25px";
	}
	else {
	document.getElementById(textarea).style.height = (document.getElementById(textarea).scrollHeight) + "px";
}
}

function photocheck()
{
if(document.getElementById('archivesuser').checked==true) {
document.getElementById('userlist').style.display='block';
}
else {
document.getElementById('userlist').style.display='none';
}
}

function showloading(element,type)
{
var type = (type == null) ? "loading" : type;
document.getElementById(element).innerHTML='<img src="images/'+type+'.gif" alt="loading" />';
}

HTMLElement.prototype.click = function() {
var thisevent = this.ownerDocument.createEvent('MouseEvents');
thisevent.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(thisevent);
}

function enterclick(e,toclick)
{
var keycode = (window.event) ? event.keyCode : e.keyCode;
if (keycode == 13)
{
document.getElementById(toclick).click();
}
}

var ajax
var completebox

function cnr(variable,action)
{
ajax=getajax()
if (ajax==null)
{
alert ("Without a more up-to-date browser you will not be able to use all of the functionality of this site.");
return;
}
var url="ajax/cnr.php?variable="+variable+"&action="+action;
if(action=='crewtitle') {
ajax.onreadystatechange=stateChangedCNRCrewTitle;
}
if(action=='boatshare'||action=='allshares') {
ajax.onreadystatechange=stateChangedCNRBoatShare;
}
ajax.open("GET",url,true);
ajax.send(null);
}

function stateChangedCNRCrewTitle() 
{
if (ajax.readyState==4)
{ 
document.getElementById("newcrewname").innerHTML=ajax.responseText;
}
}

function stateChangedCNRBoatShare() 
{
if (ajax.readyState==4)
{ 
document.getElementById("boatshareoptions").innerHTML=ajax.responseText;
}
}

function doajax(type,returnelement,data,eventid,crewnameid,userid)
{
ajax=getajax()
if (ajax==null)
{
alert ("Without a more up-to-date browser you will not be able to use all of the functionality of this site.");
return;
}
var fixeddata=data.replace(/\n/g,"/LINEEND/");
var url="ajax/do.php";
var params="t="+type+"&r="+returnelement+"&d="+encodeURIComponent(fixeddata);
if (eventid!=undefined) params=params+"&e="+eventid;
if (crewnameid!=undefined) params=params+"&c="+crewnameid;
if (userid!=undefined) params=params+"&u="+userid;
ajax.onreadystatechange=stateChangedDoAjax;
var method;
if(params.length>200) method="POST";
else method="GET";
if(method=="GET") {
	url=url+'?'+params;
	params=null;
}
if(method=="POST") {
	url=url+'?post=1';;
}
ajax.open(method,url,true);
if(method=="POST") {
	ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajax.setRequestHeader("Content-length", params.length);
	ajax.setRequestHeader("Connection", "close");
}
ajax.send(params);
}

function stateChangedDoAjax() 
{
if (ajax.readyState==4)
{
var endposition=ajax.responseText.indexOf('|');
var returnid=ajax.responseText.slice(0,endposition);
var content=ajax.responseText.slice(endposition+1);
document.getElementById(returnid).innerHTML=content;
document.getElementById("uploading"+returnid).style.display='none';
}
}

//Open Ajax
function getajax()
{
var ajax=null;
try
{
//Standards compliant browsers
ajax=new XMLHttpRequest();
}
catch (e)
{
//IE >=6
try
{
ajax=new ActiveXObject("Msxml2.XMLHTTP");
}
//IE < 6
catch (e)
{
ajax=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return ajax;
}

function bumpssmileyskey()
{
window.open('bumpssmileyskey.php','key','scrollbars=yes,status=no,width=280,height=480')
}

function jump(parent,child,get,id)
{
window.location=parent+".php?page="+child+"&"+get+"="+id;
}

function crewlistselect (seat,id,name,type) {
var inputseat='input'+seat;
if(type=='replace') {
document.getElementById(seat).value=id;
document.getElementById(inputseat).innerHTML=name;
}
if(type=='add') {
var currentid=document.getElementById(seat).value;
var currentname=document.getElementById('input'+seat).innerHTML;
document.getElementById(seat).value=currentid+'/'+id;
document.getElementById(inputseat).innerHTML=currentname+'/'+name;
}
}

function uljt(letter) {
userlistjumptab(letter);
}

function userlistjumptab(letter) {
document.getElementById('tab-Letters').innerHTML='<img src="images/loadingeee.gif" alt="loading" />';
doajax('userlistletter','tab-Letters',letter+'|normal');
return false;
}

function cljt(seatid,seat,sex,tab,eventid,crewnameid) {
crewlistjumptab(seatid,seat,sex,tab,eventid,crewnameid);
}

function crewlistjumptab(seatid,seat,sex,tab,eventid,crewnameid) {
document.getElementById('tab'+seatid+'-Suggested').style.display='none';
document.getElementById('tab'+seatid+'-Add').style.display='none';
document.getElementById('tab'+seatid+'-Letters').innerHTML='<img src="images/loadingeee.gif" alt="loading" />';
document.getElementById('tab'+seatid+'-Letters').style.display='block';
doajax('crewlistletter','tab'+seatid+'-Letters',tab+'|'+sex+'|'+seat+'|normal',eventid,crewnameid);
}

function togglecheckbox(checkbox) {
if(document.getElementById(checkbox).checked==true) document.getElementById(checkbox).checked=false;
else document.getElementById(checkbox).checked=true;
}


function aetc(sequencenumber) {
autofilleventstogglecheckbox(sequencenumber);
}

function autofilleventstogglecheckbox(sequencenumber) {
if(document.getElementById('checkbox-'+sequencenumber).checked==true) {
document.getElementById('title-'+sequencenumber).style.color='#002d6d';
document.getElementById('tdcheckbox-'+sequencenumber).style.background='#eee';
document.getElementById('tdtext-'+sequencenumber).style.background='#eee';
document.getElementById('tdcheckbox-'+sequencenumber).style.borderRight='1px solid #69c';
document.getElementById('tdtext-'+sequencenumber).style.borderRight='1px solid #69c';
document.getElementById('tdcheckbox-'+sequencenumber).style.borderBottom='1px solid #69c';
document.getElementById('tdtext-'+sequencenumber).style.borderBottom='1px solid #69c';
document.getElementById('details-'+sequencenumber).style.display='block';
}
else {
document.getElementById('title-'+sequencenumber).style.color='#999';
document.getElementById('tdcheckbox-'+sequencenumber).style.background='none';
document.getElementById('tdtext-'+sequencenumber).style.background='none';
document.getElementById('tdcheckbox-'+sequencenumber).style.border='0';
document.getElementById('tdtext-'+sequencenumber).style.border='0';
document.getElementById('details-'+sequencenumber).style.display='none';
}
}

var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

function toordinal(date) {
if(date==1||date==21||date==31) return date+'st';
else if (date==2||date==22) return date+'nd';
else if (date==3||date==23) return date+'rd';
else return date+'th';
}

function aecd(sequencenumber,type,direction) {
autofilleventschangedate(sequencenumber,type,direction);
}

function autofilleventschangedate(sequencenumber,type,direction) {
//Get the current start and end dates
var phpstartdate=document.getElementById('startdate-'+sequencenumber).value.split('-');
var phpenddate=document.getElementById('enddate-'+sequencenumber).value.split('-');
phpstartdate[1]=phpstartdate[1]-1;
phpenddate[1]=phpenddate[1]-1;
var startdate=new Date(phpstartdate[0],phpstartdate[1],phpstartdate[2],12,0,0,0);
var enddate=new Date(phpenddate[0], phpenddate[1], phpenddate[2],12,0,0,0);
//Actions:
//-Single day: start day up/down; end day up/down.
//-Multi start day up: start day up; end day check, up if same.
//-Multi start day down: start day down.
//-Multi end day up: end day up
//-Multi end day down: end day down; check start day, down if same
if(type=='single') {
if(direction=='up') {
startdate.setDate(startdate.getDate()+1);
enddate.setDate(enddate.getDate()+1);
}
if(direction=='down') {
startdate.setDate(startdate.getDate()-1);
enddate.setDate(enddate.getDate()-1);
}
}
if(type=='multistart') {
if(direction=='up') {
startdate.setDate(startdate.getDate()+1);
if(startdate>=enddate) enddate.setDate(startdate.getDate()+1);
}
if(direction=='down') {
startdate.setDate(startdate.getDate()-1);
}
}
if(type=='multiend') {
if(direction=='up') {
enddate.setDate(enddate.getDate()+1);
}
if(direction=='down') {
enddate.setDate(enddate.getDate()-1);
if(startdate>=enddate) startdate.setDate(enddate.getDate()-1);
}
}
//Prepare them to be printed back into their right places
var newstartyear=startdate.getFullYear();
var newstartmonth=startdate.getMonth()+1;
var newstartmonthname=month[startdate.getMonth()];
var newstartday=startdate.getDate();
var newstartdayname=weekday[startdate.getDay()];
var newstartdateordinal=toordinal(startdate.getDate());
var newendyear=enddate.getFullYear();
var newendmonth=enddate.getMonth()+1;
var newendmonthname=month[enddate.getMonth()];
var newendday=enddate.getDate();
var newenddayname=weekday[enddate.getDay()];
var newenddateordinal=toordinal(enddate.getDate());
var newstartdate=newstartyear+'-'+newstartmonth+'-'+newstartday;
var newenddate=newendyear+'-'+newendmonth+'-'+newendday;
var newnicestartdate=newstartdayname+' '+newstartdateordinal+' '+newstartmonthname;
var newniceenddate=newenddayname+' '+newenddateordinal+' '+newendmonthname;
//Send them all back..
document.getElementById('startdate-'+sequencenumber).value=newstartdate;
document.getElementById('enddate-'+sequencenumber).value=newenddate;
document.getElementById('singledatedisplay-'+sequencenumber).innerHTML=newnicestartdate;
document.getElementById('startdatedisplay-'+sequencenumber).innerHTML=newnicestartdate;
document.getElementById('enddatedisplay-'+sequencenumber).innerHTML=newniceenddate;
}


function selectcheck(thisbox,max,formname) {
var total=0;
var fail=0;
var selectform=formname['select[]'];
document.getElementById('selected').value='';
for(var i=0;i<selectform.length;i++){
selectform[i].checked?total++:null;
if(total>max) {
if(fail==0) {
alert('You can only select '+max+'.');
}
fail=1;
}
}
if(fail==1) {
document.getElementById('select'+thisbox).checked=false;
}
for(var i=0;i<selectform.length;i++) {
selectform[i].checked?document.getElementById('selected').value=document.getElementById('selected').value+selectform[i].value+',':null;
}
}

function bcc(force) {
	bookings_cellcolours(force);
}

function bookings_cellcolours(force) {
	var start=Number(document.getElementById('b_start').value);
	var current=Number(document.getElementById('b_current').value);
	var end=Number(document.getElementById('b_end').value);
	var active=Number(document.getElementById('b_active').value);
	if(active==1 || force>0) {
		if(active==1) {
			end=current;
		}
		//If the end time is before the start time, switch them round for use in the time display
		if(start>end) {
			actualstart=end;
			actualend=start;
		}
		else {
			actualstart=start;
			actualend=end;
		}
	//Calculate the start and end times and set the variables appropriately
		var starthour=Math.floor((actualstart-1)/4)+4;
		var startminute=(((actualstart-1)/4)-Math.floor((actualstart-1)/4))*60;
		var endhour=Math.floor(actualend/4)+4;
		var endminute=((actualend/4)-Math.floor(actualend/4))*60;
		//Check for a clash first
		var clash=0;
		for(var i=1;i<=76;i++) {
			if(document.getElementById('b_default-'+i).value>0 && ((i>=start && i<=current && current>=start) || (i<=start && i>=current && current<=start))) clash=1;
		}
		//Fill in the start/end time variables
		document.getElementById('starthour').value=starthour;
		document.getElementById('startminute').value=startminute;
		document.getElementById('endhour').value=endhour;
		document.getElementById('endminute').value=endminute;
		//Fill in the p element which tells the user the current state of play
		if(clash==1) {
			document.getElementById('clashtext').style.display='block';
			document.getElementById('submittext').style.display='none';
		}
		else {
			if(starthour<12) {
				var startampm='am';
				var displaystarthour=String(starthour);
			}
			else {
				var startampm='pm';
				if(starthour==12) {
					var displaystarthour="12";
				}
				else {
					var displaystarthour=String(starthour-12);
				}
			}
			if(endhour<12) {
				var endampm='am';
				var displayendhour=String(endhour);
			}
			else {
				var endampm='pm';
				if(endhour==12) {
					var displayendhour="12";
				}
				else {
					var displayendhour=String(endhour-12);
				}
			}
			if(startminute==0) {
				startminute="00";
			}
			else {
				startminute=String(startminute);
			}
			if(endminute==0) {
				endminute="00";
			}
			else {
				endminute=String(endminute);
			}
			document.getElementById('starttimetext').innerHTML=displaystarthour+":"+startminute+" "+startampm;
			document.getElementById('endtimetext').innerHTML=displayendhour+":"+endminute+" "+endampm;
			document.getElementById('clashtext').style.display='none';
			document.getElementById('submittext').style.display='block';
		}
		for(var i=1;i<=76;i++) {
			if((i>=start && i<=current && current>=start) || (i<=start && i>=current && current<=start)) {
				if(clash==1) {
					document.getElementById('b_field-'+i).style.backgroundColor = document.getElementById('clashcolour').value;
				}
				else {
					document.getElementById('b_field-'+i).style.backgroundColor = document.getElementById('selectedcolour').value;
				}
			}
			else if(document.getElementById('b_default-'+i).value>0) {
				document.getElementById('b_field-'+i).style.backgroundColor = document.getElementById('reservedcolour-'+document.getElementById('b_default-'+i).value).value;
			}
			else {
				if(i/2==Math.round(i/2)) {
					document.getElementById('b_field-'+i).style.backgroundColor = document.getElementById('availablecolour-1').value;
				}
				else {
					document.getElementById('b_field-'+i).style.backgroundColor = document.getElementById('availablecolour-2').value;
				}
			}
		}
	}
}

function tbmd(element) {
	timebarmousedown(element);
}

function tbmu(element) {
	timebarmouseup(element);
}
function tbmo(element) {
	timebarmouseover(element);
}

function timebarmousedown(element) {
	document.getElementById('b_start').value=element;
	document.getElementById('b_end').value=element;
	document.getElementById('b_current').value=element;
	bookings_cellcolours(1);
}

function timebarmouseup(element) {
	document.getElementById('b_end').value=element;
	bookings_cellcolours(1);
}

function timebarmouseover(element) {
	document.getElementById('b_current').value=element;
	bookings_cellcolours(0);
}