<!--

// Set dropdown menus to inactive - onload makes them active

	var menuSystemActive = false;
	
// detection of platforms

	// iphone + ipod safari
	iphoneMode = false;
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) iphoneMode = true;
	

// Set the window name

	window.name = "main";


// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			initExpanders();
			buildTabs();
			initScrollers();
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
		}
	}
	
// fix for submit forms by hitting 'return'

	function addInputSubmitEvent(form, input) {
		input.onkeydown = function(e) {
			e = e || window.event;
			if (e.keyCode == 13) {
				form.submit();
				return false;
			}
		};
	}

	function inputSubmitByReturn() {
		var forms = document.getElementsByTagName('form');
		for (var i=0;i < forms.length;i++) {
			var inputs = forms[i].getElementsByTagName('input');
			for (var j=0;j < inputs.length;j++) {
				addInputSubmitEvent(forms[i], inputs[j]);
			}
		}
	}
	
// back to top function
	
	function toTop() {
		window.scroll(0,0);
		return false;
	}

// Image Loader functions

	// Cross-browser implementation of element.addEventListener()
	function addListener(element, type, expression, bubbling)
	{
	  bubbling = bubbling || false;
	  if(window.addEventListener)	{ // Standard
		element.addEventListener(type, expression, bubbling);
		return true;
	  } else if(window.attachEvent) { // IE
		element.attachEvent('on' + type, expression);
		return true;
	  } else return false;
	}
	
	var ImageLoader = function(url){
	  this.url = url;
	  this.image = null;
	  this.loadEvent = null;
	};
	
	ImageLoader.prototype = {
	  load:function(){
		this.image = document.createElement('img');
		var url = this.url;
		var image = this.image;
		var loadEvent = this.loadEvent;
		addListener(this.image, 'load', function(e){
		  if(loadEvent != null){
			loadEvent(url, image);
		  }
		}, false);
		this.image.src = this.url;
	  },
	  getImage:function(){
		return this.image;
	  }
	};


// Function to check if a field string is empty
	
	function isEmptyField(srcField) {
		srcText = srcField.value;
		srcText = srcText.replace(/^\s+/g, '').replace(/\s+$/g, '');
		if(srcText == "") {
			srcField.value = "";
			return true;
		} else return false;
	}
	
	
// Email address validation
	
	function isValidEmail(src) {
		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(emailReg);
		return regex.test(src);
	}
	
	
// Image size checking + resizing

	function checkImageSize(srcImage,maxWidth,maxHeight) {
		if(document.images) {
			getWidth = srcImage.width;
			getHeight = srcImage.height;
			if(getWidth>maxWidth || getHeight>maxHeight) {
				widthVariance = maxWidth/getWidth;
				heightVariance = maxHeight/getHeight;
				if(widthVariance<=heightVariance) scalePercentage = getWidth/maxWidth;
				else scalePercentage = getHeight/maxHeight;
				srcImage.width = getWidth/scalePercentage;
				srcImage.height = getHeight/scalePercentage;
			}
		}
	}


// Header log-in form stuff

	var headerInitLoginText = "Membership number...";
	
	function checkLoginField(fieldMode) {
		searchField = document.getElementById("headerLoginNumber");
		if(fieldMode) {
			// enters field
			searchField.className = "active";
			if(searchField.value == headerInitLoginText) searchField.value = "";
		} else {
			// exits field
			searchField.className = "";
			if(isEmptyField(searchField)) searchField.value = headerInitLoginText;
		}
	}

	function checkMemberLogin() {
		searchField = document.getElementById("headerLoginNumber");
		if(isEmptyField(searchField) || searchField.value == headerInitLoginText) {
			alert("You have not entered a number!");
			return false;
		} else return true;
	}
	
	function submitHeaderLoginForm() {
		if(checkMemberLogin()) document.getElementById("headerLoginForm").submit();
	}


// Print function

	function printPage() {
		if(window.print) {
			window.print();
		} else {
			alert("Your browser does not support the javascript 'print' function.\nPlease use your operating system's print menu to print this page.")
		}
		return false;
	}
	
	
// Function to track links with Google Analytics
	
	function trackLink(linkSrc) {
		try { pageTracker._trackPageview(linkSrc); } // New Google tracking code
		catch(e) {
			try { urchinTracker(linkSrc); } // Legacy Google tracking code
			catch(e) { }
		}
	}
	
	
// add a getElementByClass function for browsers that don't support getElementsByClassName
		
	// getElementsByClass(class string, optional DOM node, optional html tag)
	function getElementsByClass(searchClass,node,tag) {
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i = 0, j = 0; i < elsLen; i++) {
			if ( pattern.test(els[i].className) ) {
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}
	

// Menu Stuff
	
	var dynamicMenu;
	var menuOffsetLeft;
	var menuOffsetTop;
	var MenuAreaWidth;
	var menuMinX;
	var menuMaxX;
	var storeMenuIndex = null;
	var storeButtonState = null;
	var storeThisElement = null;
	var menuActive = false;
	var menuTimeout = null;
	
	function getMenuClass(src,hoverState) {
		if(hoverState) return "menuOver"
		else {
			if(storeButtonState) return "menuOn"
			else return "menuOff";
		}
	}
	
	function setPos(getObject,getX,getY) {
		if(getObject.style.posTop) {
			getObject.style.posLeft = getX;
			getObject.style.posTop = getY;
		} else {
			getObject.style.left = getX + "px";
			getObject.style.top = getY + "px";
		}
	}
	
	function showMenu(menuIndex,buttonState,buttonOffset,thisElement) {
		if(menuSystemActive) {
			cancelHideMenu();
			// build dynamicMenu if it doesn't already exist
			if(!document.getElementById("dynamicMenu")) {
				var newdiv = document.createElement('div');
   				newdiv.setAttribute('id', 'dynamicMenu');
				document.body.appendChild(newdiv);
				dynamicMenu = document.getElementById("dynamicMenu");
				// also read some initial values
				MenuAreaWidth = parseFloat(document.getElementById('menuArea').offsetWidth);
			}
			if(menuActive && menuIndex!= storeMenuIndex) doHideMenu();
			if(!menuActive) {
				// get offsets
				MenuOffsetLeft = parseFloat(document.getElementById('centredPage').offsetLeft) + parseFloat(document.getElementById('pageArea').offsetLeft) + parseFloat(document.getElementById('menuArea').offsetLeft);
				MenuOffsetTop = parseFloat(document.getElementById('centredPage').offsetTop) + parseFloat(document.getElementById('pageArea').offsetTop) + parseFloat(document.getElementById('menuArea').offsetTop);
				menuMinX = MenuOffsetLeft + 5;
				menuMaxX = MenuOffsetLeft + MenuAreaWidth;
				// create dropdown
				storeMenuIndex = menuIndex;
				storeButtonState = buttonState;
				storeThisElement = thisElement;
				thisElement.className = getMenuClass(thisElement,true);
				if(SubMenuStrings[menuIndex]) {
					// Set column width class for menu
					dynamicMenu.className = ("cols" + SubMenuCols[menuIndex]);
					SubMenuWidth = dynamicMenu.offsetWidth;
					// Work out menu position
					yPos = MenuOffsetTop + 41;
					xPos = parseFloat(thisElement.getElementsByTagName("SPAN")[0].offsetLeft) + buttonOffset + MenuOffsetLeft + 10;
					// check limits
					if(xPos < menuMinX) xPos = menuMinX;
					if((xPos + SubMenuWidth) > menuMaxX) xPos = (menuMaxX - SubMenuWidth);
					// build menu content
					buildMenu = "<div class='dynamicMenuElements'>";
					buildMenu += "<div class='topShadow'><div id='dynamicMenuArrow' class='dynamicMenuArrow'><\/div><\/div>";
					buildMenu += "<div class='midSection'><div class='whiteBlank'><\/div>";
					buildMenu += "<div class='menuBody'>";
					buildMenu += SubMenuStrings[menuIndex];
					buildMenu += "<\/div>";
					buildMenu += "<\/div>";
					buildMenu += "<div class='bottomShadow'><\/div>";
					buildMenu += "<\/div>";
					dynamicMenu.innerHTML = buildMenu;
					// arrow position
					arrowX = MenuOffsetLeft + Math.floor(buttonOffset + (parseFloat(thisElement.offsetWidth)/2)) - xPos + 8;
					setPos(document.getElementById('dynamicMenuArrow'),arrowX,0);
					// Set position of menu + make visible
					setPos(dynamicMenu,xPos,yPos);
					dynamicMenu.style.zIndex = 200;
					dynamicMenu.style.visibility = "visible";
					// rollover behaviour
					dynamicMenu.onmouseover = function() {
						showMenu(menuIndex,buttonState,buttonOffset,thisElement);
					}
					dynamicMenu.onmouseout = function() {
						hideMenu();
					}
					
				}
				menuActive = true;
			}
		}
	}
	
	function hideMenu() {
		if(menuSystemActive) {
			menuTimeout = setTimeout("doHideMenu();",200);
		}
	}
	
	function doHideMenu() {
		if(menuSystemActive && storeThisElement != null) {
			// hide menu
			storeThisElement.className = getMenuClass(storeThisElement,false);
			dynamicMenu.style.visibility = "hidden";
			storeMenuIndex = null;
			storeButtonState = null;
			storeThisElement = null;
			menuActive = false;
			// cancel behaviours
			dynamicMenu.onmouseover = null;
			dynamicMenu.onmouseout = null;
		}
	}
	
	function cancelHideMenu() {
		if(menuSystemActive) {
			clearTimeout(menuTimeout);
			menuTimeout = null;
		}
	}
	
	function menuAreaClick(menuIndex,buttonState,buttonOffset,thisElement) {
		if(menuSystemActive) {
			if(menuActive && storeMenuIndex == menuIndex) {
				// go to first url in submenu
				firstLink = dynamicMenu.getElementsByTagName("A")[0];
				firstLinkURL = firstLink.href.toString();
				firstLinkTarget = firstLink.target.toString();
				firstLinkTracking = firstLink.getAttribute("onclick").toString();
				// do tracking if required
				if (firstLinkTracking.indexOf("trackLink") > -1) {
					// get tracking code
					var regex = new RegExp(".*trackLink\\('([^']*)'.*");
					trackingCode = regex.exec(firstLinkTracking)[1];
					trackLink(trackingCode);
				}
				// page load
				if(firstLinkTarget == "_blank") {
					window.open(firstLinkURL);
				} else {
					window.location = firstLinkURL;
				}
				// close menu
				doHideMenu();
				return false;
			} else  {
				// show menu
				showMenu(menuIndex,buttonState,buttonOffset,thisElement);
				return false;
			}
		} else {
			return true;
		}
	}
	
// -->