var ajax_request=false;
var daysInMonth = new Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysOfWeek = new Array("", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var monthsOfYear = new Array("", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var mousex, mousey;
var gl_dispelm="none";
var gl_divno=new Array();
var xoffset=0;
var yoffset=0;
var tabwidth=1000;
var tabheight=1000;
var gl_old_search = window.location.href.split('?');
var gl_old_debug="";
var gl_old_tab="";
var gl_hover_classes="userhelp";
var IE = document.all?true:false;
var tinyMCE_textarea_id;

if(gl_old_search.length!=1){
	var gl_old_parms = gl_old_search[1].split('&');
	for(var gl_i=0; gl_i<gl_old_parms.length; gl_i++){
		if(gl_old_parms[gl_i].substr(0,5)=="debug"){ gl_old_debug="debug"; }
		if(gl_old_parms[gl_i].substr(0,4)=="tab="){ gl_old_tab=gl_old_parms[gl_i]; }
	}
}
if (gl_old_debug=="" && gl_old_tab==""){
	var gl_query="";
}else{
	gl_query="?";
	if (gl_old_debug!="" && gl_old_tab!=""){
		gl_old_debug = "&"+gl_old_debug;
	}
}
var global_url=window.location.protocol+"//"+window.location.host+window.location.pathname+"global.php?"+gl_old_tab+gl_old_debug;
var global_init=ajax_sendRequest(global_url,false);
var gl_onload;
eval(global_init);

window.onload=function(){
	var cleverVF_in_use, cleverVF_used, f, b, buttons, on_click, on_click_value, t, tinyMCE_defined, tinyMCE_used, myElement
	if(document.getElementById("hp_frontleft")){
		if(typeof hp_load=="function") hp_load(); else alert("This page requires 'home_page.js' to be loaded!");
	}
	if(document.getElementById("ifu_map")){
		if(typeof ifu_initialise=="function") ifu_initialise(); else alert("This page requires 'info_find_us.js' to be loaded!");
	}
	if(document.getElementById("admin_diary")){
		if(typeof admin_cal_init=="function") admin_cal_init(); else alert("This page requires 'admin.js' to be loaded!");
	}
	if(document.getElementById("sitemap")){
		if(typeof info_sm_init=="function") info_sm_init(); else alert("This page requires 'info_sitemap.js' to be loaded!");
	}
	if(document.getElementById("seat_Layout")){
		if(typeof seat_load=="function") seat_load('Layout'); else alert("This page requires 'box_office.js' to be loaded!");
	}
	if(document.getElementById("seat_Status")){
		if(typeof seat_load=="function") seat_load('Status'); else alert("This page requires 'box_office.js' to be loaded!");
	}
	if(document.getElementById("seat_Setting")){
		if(typeof seat_load=="function") seat_load('Settings'); else alert("This page requires 'box_office.js' to be loaded!");
	}
	if(document.getElementById("tabs")){
		if(typeof tabs_init=="function") tabs_init(); else alert("This page requires 'tabs.js' to be loaded!");
	}
	if(document.getElementById("fu_result")){
		if(typeof fu_apply_upload=="function") fu_apply_upload(document.getElementById('fu_result').innerHTML); else alert("This page requires 'cleverFU.js' to be loaded!");
	}
	// Examine very FORM loaded and:
	// a) Add a hidden js_submit field that we can use in PHP to check that Javascript was enabled.
	// b) If the form's onsubmit or any of the form's buttons oncclick invokes CleverVF then run vf_load for that form
	// c) If the tinyMCE form is present amend all Textarea's to invoke tinyMCE_start when double-clicked
	// d) If cleverVF used, check it is loaded
	// e) if tinyMCE used, check it is loaded and amend Hover_Classes and initialise tinyMCE
	// f) Capture Mouse Movements
	tinyMCE_defined=document.getElementById("tinyMCE_form")
	var forms=document.getElementsByTagName("form");
	if(forms.length!=0){						// a) add hidden js_submit and vf_checked fields, run vf_load()
		cleverVF_used=false;
		tinyeMCE_used=false;
		for(f=0; f<forms.length;f++){
			if(forms[f].id!="tinyMCE_form"){
				cleverVF_in_use=false;
				myElement=document.createElement("input");
				myElement.setAttribute("type","hidden");
				myElement.setAttribute("name","js_submit");
				myElement.setAttribute("value","true");
				forms[f].appendChild(myElement)
				on_click=forms[f].getAttribute("onsubmit");
				if(on_click){
					on_click_value=""+on_click;
					if(on_click_value.indexOf("return vf_form")!=-1 || on_click_value.indexOf("return admin_tr_validate")!=-1){
						cleverVF_in_use=true;
					}
				}
				if(cleverVF_in_use==false){
					buttons=forms[f].getElementsByTagName("button");
					if(buttons.length!=0){
						for(b=0; b<buttons.length;b++){
							if(buttons[b].getAttribute("type")=="submit"){
								on_click=buttons[b].getAttribute("onclick");
								if(on_click){
									on_click_value=""+on_click;
									if(on_click_value.indexOf("return vf_form")!=false || on_click_value.indexOf("return admin_tr_validate")!=false){
										cleverVF_in_use=true;
										break;
									}
								}
							}
						}
					}
				}
				if(cleverVF_in_use===false){
					buttons=forms[f].getElementsByTagName("input");
					if(buttons.length!=0){
						for(var b=0; b<buttons.length;b++){
							if(buttons[b].getAttribute("type")=="submit"){
								on_click=buttons[b].getAttribute("onclick");
								if(on_click){
									on_click_value=""+on_click
									if(on_click_value.indexOf("return vf_form")!=false || on_click_value.indexOf("return admin_tr_validate")!=false){
										cleverVF_in_use=true;
										break;
									}
								}
							}
						}
					}
				}
				if(cleverVF_in_use){
					cleverVF_used=true;
					if(typeof vf_load=="function") vf_load(forms[f].id);											// (b)
				}
				if(tinyMCE_defined){
					var text_areas=forms[f].getElementsByTagName("textarea");
					if(text_areas.length!=0){
						tinyMCE_used=true;
						for(t=0; t<text_areas.length;t++){
							text_areas[t].setAttribute("ondblclick", "tinyMCE_start('"+text_areas[t].id+"')");		// (c)
						}
					}
				}
			}
		}
		if(cleverVF_used && typeof vf_load=="undefined") alert("This page requires cleverVF.js to be loaded!")	// (d)
		if(tinyMCE_used && tinyMCE_defined) gl_tinyMCE();														// (e)
	}

	if (!IE) document.captureEvents(Event.MOUSEMOVE)			// Capture Mouse MOvements						 // (f)
	document.onmousemove = gl_getMouseXY;
	document.onmouseover = gl_mouse_on;
	document.onmouseout = gl_mouse_off;

/*	if(gl_onload!="") {
		gl_commands=gl_onload.split(";");
		for(var c=0; c<gl_commands.length;c++){
				eval(gl_commands[c])
		}
	} */
}

function errorhandler(msg,url,ln){
    alert("Error: "+msg+ "\nIn File:"+ url + "\nAt line:" +ln +"\nActive Element:"+document.activeElement.id);
    return false;
}

function gl_daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function ajax_sendRequest(url,async,post){
	var method;
	if(post){
		method="POST" ;
	}else{
		method="GET";
	}
	var ajax_request = new ajax_newRequest();					// Create new request by calling newRequest function
	if (ajax_request.xmlhttp){									// If request exists in array[arrayPos]
		url = url.replace(/&amp;/g,"&");
		ajax_request.xmlhttp.open(method,url,async);			// Send Request and wait for change
		ajax_request.xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT");
		ajax_request.xmlhttp.setRequestHeader("Cache-Control", "must-revalidate");
		if(post){
			ajax_request.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajax_request.xmlhttp.setRequestHeader("Content-length", post.length);
			ajax_request.xmlhttp.setRequestHeader("Connection", "close");
		}
		if(async) {
			ajax_request.xmlhttp.onreadystatechange = ajax_handleResponse;
		}
		if(post){
			ajax_request.xmlhttp.send(post);
		}else if (window.XMLHttpRequest){
			ajax_request.xmlhttp.send(null);
		}else if(window.ActiveXObject){
			ajax_request.xmlhttp.send();
		}
		if(!async) {
			return ajax_request.xmlhttp.responseText;
		}
		return true;
	}else{
		return false;
	}
}

function ajax_handleResponse(){											// Exectue function() when ready state changes
	if (typeof(ajax_request) != 'undefined' && ajax_request.xmlhttp.readyState < 4){ 	// show request pending
	}
	if (typeof(ajax_request) != 'undefined' && ajax_request.xmlhttp.readyState == 4){	// Execute when readyState == 4 (request is complete)
		if (ajax_request.xmlhttp.status == 200 || ajax_request.xmlhttp.status == 304){	// process response
			alert(ajax_request.xmlhttp.responseText) ;
		} else {
			alert('Handle an error here. Status code='+ajax_request.xmlhttp.status);
		}
	}
}

function ajax_newRequest() {									// Create a new request
	this.xmlhttp = false;
	try{
		this.xmlhttp=new XMLHttpRequest();						// Firefox, Opera 8.0+, Safari
	}
	catch (e){
		try{
			this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
		}
		catch (e){
			try{
				this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	return true;
}

function gl_diags(){
	var form=document.getElementById("problem");
	var myElement; //new_flds="";
	for (var property in navigator){
	//	new_flds+="<input type='hidden' name='JS_"+property+"' value='"+navigator[property]+"' />\n";
		myElement = document.createElement("input");
		myElement.setAttribute("type","hidden");
		myElement.setAttribute("name","JS_"+property);
		myElement.setAttribute("value",navigator[property]);
		form.appendChild(myElement)
	}
//	form.innerHTML=form.innerHTML+new_flds;
}
function gl_mouse_on(e){
	var currentObj, target_classes, $i
	if (!e) e = window.event;
	if (e.target){
		currentObj = e.target;
	}else if (e.srcElement) {
		currentObj = e.srcElement;
	}
	if (currentObj.nodeType == 3) currentObj = currentObj.parentNode;
	gl_dispelm = "none"
	if(gl_hover_classes!=""){
		if(typeof(currentObj.className)!="undefined"){
			if(currentObj.className!=""){
				target_classes=currentObj.className.split(" ")
				for (i=0;i<target_classes.length;i++){
					if(gl_hover_classes.indexOf(target_classes[i])!=-1){
						gl_divno=currentObj.getElementsByTagName('div');
						gl_dispelm=gl_divno[0];
						break;
					}
				}
			}
		}
		if(gl_dispelm=="none" && typeof(currentObj.parentNode.className)!="undefined"){
			if(currentObj.parentNode.className!=""){
				target_classes=currentObj.parentNode.className.split(" ")
				for (i=0;i<target_classes.length;i++){
					if(gl_hover_classes.indexOf(target_classes[i])!=-1){
						gl_divno=currentObj.parentNode.getElementsByTagName('div');
						gl_dispelm=gl_divno[0];
						break;
					}
				}
			}
		}
		if(gl_divno.length>0 && gl_dispelm!= "none"){
			gl_divno[0].style.display='block';
			if(document.body.offsetHeight-gl_divno[0].offsetHeight-50<mousey){
				try{ gl_divno[0].style.top=mousey-gl_divno[0].offsetHeight+'px';} catch(e){}
			} else {
				try{ gl_divno[0].style.top=mousey+'px';} catch(e){}
			}
			if(document.body.offsetWidth-gl_divno[0].offsetWidth+100<mousex){
				try { gl_divno[0].style.left=mousex-gl_divno[0].offsetWidth+'px';} catch(e){}
			} else {
				try { gl_divno[0].style.left=mousex+'px'; } catch(e){}
			}
		}else{
			gl_dispelm = "none"
		}
	}
}

function gl_mouse_off(){
	if(gl_dispelm != "none"){
		gl_dispelm.style.display='none'
		gl_dispelm = "none"
	}
}

function gl_getMouseXY(e){
	if(gl_dispelm !="none"){
		if(IE){ 																		// grab the x-y pos.s if browser is IE
			if (document.documentElement && !document.documentElement.scrollTop){ 		// IE6 +4.01 but no scrolling going on
				mousey = event.clientY ;
			}else if (document.documentElement && document.documentElement.scrollTop){	// IE6 +4.01 and user has scrolled
				mousey = event.clientY + document.documentElement.scrollTop;
			}else if (document.body && document.body.scrollTop){						// IE5 or DTD 3.2
				mousey = event.clientY + document.body.scrollTop;
			}
			if (document.documentElement && !document.documentElement.scrollLeft){ 		// IE6 +4.01 but no scrolling going on
				mousex = event.clientX ;
			}else if (document.documentElement && document.documentElement.scrollLeft){// IE6 +4.01 and user has scrolled
				mousex = event.clientX + document.documentElement.scrollLeft;
			}else if (document.body && document.body.scrollTop){						// IE5 or DTD 3.2
				mousex = event.clientX + document.body.scrollLeft;
			}
		}else {  																		// grab the x-y pos.s if browser is NS
			mousex = e.pageX;
			mousey = e.pageY;
		}
		if (mousex < 0){mousex = 0;}
		if (mousey < 0){mousey = 0;}
		if(document.body.offsetWidth-gl_divno[0].offsetWidth-50<mousex){
			gl_divno[0].style.left=mousex-gl_divno[0].offsetWidth+'px';
		} else {
			gl_divno[0].style.left=mousex+'px'
		}
		if(document.body.offsetHeight-gl_divno[0].offsetHeight+100<mousey){
			gl_divno[0].style.top=mousey-gl_divno[0].offsetHeight+'px';
		} else {
			gl_divno[0].style.top=mousey+'px';
		}
	}
	return true;
}

function modify_url(new_pairs){
	var new_pending=new Array(), new_kv, np;
	var new_parms = new_pairs.split('&');
	var old_search = window.location.href.split('?');
	if(old_search.length==1){
		return window.location.protocol + '//' + window.location.host + window.location.pathname + '?' + new_pairs;
	}else{
		var old_parms = old_search[1].split('&');
		var old_kv ,op ;
		for(np=0; np<new_parms.length; np++){
			new_pending[np]=true;
			new_kv = new_parms[np].split('=');
			for(op=0; op<old_parms.length; op++){
				old_kv = old_parms[op].split('=')
				if(old_kv[0]==new_kv[0]){
					old_parms[op] = old_kv[0]+'='+new_kv[1] ;
					new_pending[np] = false;
				}else if(old_kv.length==2){
					if(old_kv[1].substr(old_kv[1].length-1,1)=='#'){
						old_parms[op] = old_kv[0]+'='+old_kv[1].substr(0,old_kv[1].length-1);
					}
				}
			}
			if(new_pending[np]==true){
				old_parms[old_parms.length] = new_kv[0]+"="+new_kv[1];
			}
		}
		return window.location.protocol + '//' + window.location.host + window.location.pathname + '?' + old_parms.join('&');
	}
}

function gl_whichelement() {
	var targ;
	var elem=window.event;
	if(typeof(elem)!='undefined'){
		if(elem.target) targ=elem.target;
		else if(elem.srcElement) targ=elem.srcElement;
		if(targ.nodeType==3) targ=targ.parentNode;
		return targ;
	}
	return false;
}

function gl_getPosition(e) {
	if(gl_dispelm !="none"){
		e = e || window.event;
		var cursor = {x:0, y:0};
		if (e.pageX || e.pageY) {
			cursor.x = e.pageX;
			cursor.y = e.pageY;
		} else {
			var de = document.documentElement;
			var b = document.body;
			cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
			cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
		}
		return cursor;
	}
	return false;
}


// From http://www.somacon.com/p143.php
// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
// example:     var file_id=vf_getCheckedValue(document.forms['selectfile'].elements['selected'])
 function gl_getCheckedValue(radioObj) {
	if(!radioObj) { return ""; }
	var radioLength = radioObj.length;
	if(radioLength == undefined){
		if(radioObj.checked){
			return radioObj.value;
		}else{
			return "";
		}
	}
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) { return radioObj[i].value; }
	}
	return "";
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
// Example: vf_setCheckedValue(document.forms['selectfile'].elements['selected'], '2') <- Value of button to be selected
function gl_setCheckedValue(radioObj, newValue) {
	if(!radioObj) { return; }
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) { radioObj[i].checked = true; }
	}
}

function tinyMCE_start(textarea){
	var wrap=document.getElementById("tinyMCE_wrap")
	var div=document.getElementById("tinyMCE_div")
	if(wrap && div){
		if (typeof window.innerWidth != 'undefined') {
			viewportwidth = window.innerHeight;
		} else {
			viewportwidth = document.documentElement.clientHeight;
		}
		if ((viewportwidth>document.body.parentNode.scrollWidth) && (viewportwidth>document.body.parentNode.clientWidth)){
			window_width = viewportwidth;
		} else {
			if (document.body.parentNode.clientWidth > document.body.parentNode.scrollWidth) {
				window_width = document.body.parentNode.clientWidth;
			} else {
				window_width = document.body.parentNode.scrollWidth;
			}
		}
		wrap.style.backgroundColor="black";
		wrap.style.display="block";
		wrap.style.width=window_width+"px";
		wrap.style.height=document.documentElement.clientHeight+20+"px";
		wrap.style.left='0px';
		wrap.style.top = document.documentElement.scrollTop+"px"
		div.style.display="block";
		div.style.left=(window_width-div.offsetWidth)/2 + 'px';
		div.style.top=(document.documentElement.clientHeight-div.offsetHeight)/2 + document.documentElement.scrollTop+"px"
	}
	tinyMCE_textarea_id=textarea;
	tinyMCE.get("tinyMCE_textarea").setContent(document.getElementById(tinyMCE_textarea_id).value);
	document.getElementById("tinyMCE_label").innerHTML=document.getElementById(tinyMCE_textarea_id).name.replace("_"," ")
}

function tinyMCE_apply(){
	document.getElementById(tinyMCE_textarea_id).value=tinyMCE.get("tinyMCE_textarea").getContent()
	tinyMCE_cancel();
}

function tinyMCE_cancel(){
	var wrap=document.getElementById("tinyMCE_wrap")
	var div=document.getElementById("tinyMCE_div")
	wrap.style.backgroundColor="transparent";
	div.style.display="none"
	wrap.style.display="none"
}

function gl_tinyMCE(){
	if(typeof tinyMCE!="object"){
		alert("This page requires tinyMCE.js to be loaded!");
		return;
	}
	tinyMCE.init({
// General options
		mode : "exact",
		elements : "tinyMCE_textarea",
		content_css : "screen.css",
		theme : 'advanced',
// Theme options
		theme_advanced_buttons1 : "fullscreen,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect,forecolor,backcolor,|,removeformat|,help",
		theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,|,anchor,image,|,sub,sup,|,charmap,|,hr,|,spellchecker,|,cleanup,visualaid,code",
		theme_advanced_buttons3 : "",
		theme_advanced_buttons4 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
//		theme_advanced_source_editor_width : 900,
//		theme_advanced_source_editor_height : 900,
		theme_advanced_resizing : true,
		plugins : "fullscreen,spellchecker",
		fullscreen_new_window : true,
		fullscreen_settings : {
			theme_advanced_path_location : "bottom"
			},
		spellchecker_rpc_url : window.location.protocol+"//"+window.location.host+window.location.pathname+"tinymce/jscripts/tiny_mce/plugins/spellchecker/rpc.php",
		spellchecker_languages : "+English=en_GB",
		spellchecker_word_separator_chars : "\\s!\"\'#$%&()*+,-./:;<=>?@[\]^_{|}????????????????\u201d\u201c" // added '
//"safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager",
// Drop lists for link/image/media/template dialogs
//		template_external_list_url : "js/template_list.js",
//		external_link_list_url : "js/link_list.js",
//		external_image_list_url : "js/image_list.js",
//		media_external_list_url : "js/media_list.js",
// Replace values for the template plugin
//		template_replace_values : {
//		username : "Some User",
//		staffid : "991234"
	});
}

function gl_help_hover(){
	var div=document.getElementById("userhelp")
	if(div){
		var cursor=gl_getPosition();
		if(cursor){
			div.style.left=cursor.x
			div.style.top=cursor.y
		}
	}
}