﻿<!--

// Set dropdown menus to inactive - onload makes them active

	var menuSystemActive = false;
	
// detection of platforms

	// iphone + ipod safari
	var iphoneMode = false;
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) iphoneMode = true;

// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
			// H1
			flashH1();
			// add flash subtitles to submenu content (IE Flash only - other flicker)
			if(/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) flashMenuH2s();
			// tabbed content
			buildTabs();
			// sifr
			sifrStart();
			// sig image movies
			sigImageMovie();
			// news tickers
			initScrollers();
			// clickable panels
			initClickablePanels();
		}
	}
	
// siFR styling code
		
	var fixChars = function(str) {
		str=str.replace(/“/g,'"') ;
		str=str.replace(/”/g,'"') ;
		str=str.replace(/‘/g,'\'') ;
		str=str.replace(/’/g,'\'') ;
		return str ;
	}
	
	var fixCharsCapitals = function(str) {
		return fixChars(str).toUpperCase();
	}	
	
	var sabotage = { src: '/sifr/sabotage.swf'};
	var gunplay = { src: '/sifr/gunplay.swf'};
	var handOfSean = { src: '/sifr/hand-of-sean.swf'};
	sIFR.useStyleCheck = true;
	sIFR.activate(sabotage, gunplay, handOfSean);

	function sifrStart() {
		
		sIFR.replace(handOfSean, {
		  selector: 'div.sidepanel .sidepanelContent h2',
		  modifyContentString: fixCharsCapitals,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -4,
		  css: '.sIFR-root { font-size: 18px; letter-spacing: 1; color: #ffffff; }',
		  filters: { Glow: { knockout: false, strength: 2, quality: 1, color: '#02152F', distance: 2}}
		});
		
		sIFR.replace(handOfSean, {
		  selector: '.mainColumn h2',
		  modifyContentString: fixCharsCapitals,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -4,
		  css: '.sIFR-root { font-size: 18px; letter-spacing: 1; color: #ffffff; }',
		  filters: { Glow: { knockout: false, strength: 3, quality: 1, color: '#BD0014', distance: 0}}
		});
		
		sIFR.replace(handOfSean, {
		  selector: '.largePanel h3',
		  modifyContentString: fixCharsCapitals,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -4,
		  css: '.sIFR-root { font-size: 18px; letter-spacing: 1; color: #ffffff; }',
		  filters: { Glow: { knockout: false, strength: 2, quality: 1, color: '#02152F', distance: 2}}
		});
		
		sIFR.replace(gunplay, {
		  selector: '.largePanel .quote',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -2,
		  css: '.sIFR-root { font-size: 20px; letter-spacing: 1; color: #ffffff; }',
		  filters: { Glow: { knockout: false, strength: 2, quality: 1, color: '#000000', distance: 2}}
		});
		
		sIFR.replace(gunplay, {
		  selector: '.mainColumn h3',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -4,
		  css: '.sIFR-root { font-size: 20px; letter-spacing: 1; color: #ffffff; }',
		  filters: { Glow: { knockout: false, strength: 3, quality: 1, color: '#BD0014', distance: 0}}
		});
	
	}
	
// 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;
	}
	
// social bookmarking title function

	function addBookmarkTitle(getLink,getVarName) {
		getLink.href += ("&" + getVarName + "=" + escape(document.title));
		return true;
	}
	
// panel link clicker

	var allClickPanels = new Array();

	function initClickablePanels() {
		if(document.getElementsByClassName) {
			findClickPanels = document.getElementsByClassName("clickablePanel");
		} else {
			findClickPanels = getElementsByClass("clickablePanel",document,"div");
		}
		if(findClickPanels.length > 0) {
			for(i=0;i<findClickPanels.length;i++) {
				allClickPanels[i] = new clickPanel(findClickPanels[i],i);
			}
		}
	}
	
	function clickPanel(getPanel, getIndex) {
		this.panel = getPanel;
		this.index = getIndex;
		if(this.panel.getElementsByTagName('A')[0]) {
			// get link details
			this.panel.newLocation = this.panel.getElementsByTagName('A')[0].href;
			this.panel.newTarget = this.panel.getElementsByTagName('A')[0].target;
			// set behaviour
			this.panel.onclick = function() {
				if(this.newTarget == "_blank") {
					window.open(this.newLocation);
				} else {
					window.location = this.newLocation;
				}
			}
			// cancel link action
			this.panel.getElementsByTagName('A')[0].onclick = function() {return false};
			// set cursor style
			this.panel.style.cursor = "pointer";
		}
	}

// ticket panel functions

	function submitTicketsForm() {
		document.getElementById("ticketsForm").submit();
	}
	
	function toggleTicketsMenu(getMode) {
		if(document.getElementById("purchaseSelect")) {
			if(getMode) {
				document.getElementById("purchaseSelect").style.visibility = "visible";
			} else {
				document.getElementById("purchaseSelect").style.visibility = "hidden";
			}
		}
	}
	
// register panel functions

	var initRegisterText = "Stick your email in this hole!";
	
	function checkRegisterField(fieldMode) {
		searchField = document.getElementById("registerEmail");
		if(fieldMode) {
			// enters field
			searchField.className = "active";
			if(searchField.value == initRegisterText) searchField.value = "";
		} else {
			// exits field
			searchField.className = "";
			if(isEmptyField(searchField)) searchField.value = initRegisterText;
		}
	}
	
	function submitRegisterForm() {
		if(validateRegisterForm()) document.getElementById("registerForm").submit();
	}
	
	function validateRegisterForm() {
		getEmail = document.getElementById("registerEmail").value.toString();
		if(isValidEmail(getEmail)) {
			return true;
		} else {
			alert("This does not appear to be a valid email address. Please check again.");
			return false;
		}
	}
	
// pop-up window opener

	window.name = "main";

	function openWindow(srcLink,wWidth,wHeight) {
		if(srcLink) {
			if(wWidth && wHeight) {
				window.open(srcLink, '', 'toolbar=no,menubar=yes,scrollbars=yes,resizable=yes,width=' + wWidth + ',height=' + wHeight);
			} else {
				window.open(srcLink, '', 'toolbar=no,menubar=yes,scrollbars=yes,resizable=yes');
			}
			return false;
		}
	}


// 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;
			}
		}
	}
	
// Menu flash/js functions
	
	var flashMenuObject;
	var flashMenu = false; // boolean to show whether we are using the flash menu
	var flashMenuReady = false;
	var flashMenuStarted = false;

	function flashMenuHandshake() { // flash movie has received handshake from javascript
		flashMenu = true;
		flashMenuReady = true;
	}

	function flashMenuInit() { // flash movie has started running
		flashMenu = true;
		flashMenuStarted = true;
		setupFlashMenu();
	}
	
	function setupFlashMenu() {
		// Check whether the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's document.videoPlayer.
		// The videoPlayer is the ID assigned to the <object> and <embed> tags.
		flashMenuObject = (isIE) ? window['headerFlashMenu'] : document['headerFlashMenu'];
		// Send html handshake to flash
		flashMenuObject.htmlIsReady();
	}

// Menu Stuff

	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	var dynamicMenu;
	var menuFocus = "button";
	var dynamicMenuIndicatorRear;
	var dynamicMenuIndicatorFront;
	var dynamicMenuContent;
	var storeMenuIndex = null;
	var storeButtonState = null;
	var storeThisElement = null;
	var menuActive = false;
	var menuTimeout = null;
	var submenuTimeout = null;
	
	function getMenuClass(src,hoverState) {
		if(hoverState) return "menuOver"
		else {
			if(storeButtonState) return "menuOn"
			else return "menuOff";
		}
	}
	
	function setPos(getObject,getX,getY) {
		getX = Math.floor(getX);
		getY = Math.floor(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,buttonCenterX,thisElement) {
		if(menuSystemActive) {
			clearTimeout(submenuTimeout);
			cancelHideMenu();
			if(menuActive && menuIndex!= storeMenuIndex) doHideMenu('menu');
			if(!menuActive) {
				// get elements
				dynamicMenu = document.getElementById("dynamicMenu");
				dynamicMenuIndicatorRear = document.getElementById("dynamicMenuIndicatorRear");
				dynamicMenuIndicatorFront = document.getElementById("dynamicMenuIndicatorFront");
				dynamicMenuContent = document.getElementById("dynamicMenuContent");
				//activation
				storeMenuIndex = menuIndex;
				if(flashMenu) {
					storeThisElement = "placebo";
				} else {
					storeButtonState = buttonState;
					storeThisElement = thisElement;
					thisElement.className = getMenuClass(thisElement,true);
				}
				if(document.getElementById("submenu" + menuIndex)) {
					// hide visitDate in ie6
					if(navigator.userAgent.indexOf("MSIE 5")!=-1 || navigator.userAgent.indexOf("MSIE 6")!=-1) toggleTicketsMenu(false);
					// arrow position
					setPos(dynamicMenuIndicatorRear,(buttonCenterX - 9),0);
					setPos(dynamicMenuIndicatorFront,(buttonCenterX - 6),0);
					// Set position of menu + make visible
					dynamicMenu.style.zIndex = 1000;
					dynamicMenu.style.display = "block";
					// switch submenu content on
					document.getElementById("submenu" + menuIndex).style.display = "block";
					// set menu depth
					contentHeight = parseFloat(document.getElementById("submenuContainer" + menuIndex).offsetHeight);
					submenuHeight = parseFloat(document.getElementById("submenu" + menuIndex).offsetHeight);
					if(submenuHeight < contentHeight) {
						document.getElementById("submenu" + menuIndex).style.height = contentHeight + "px";
					}
					// ie6 rendering bug fix
					dynamicMenuContent.style.height = contentHeight + "px";
					// rollover behaviour
					dynamicMenu.onmouseover = function() {
						menuFocus = "menu";
						showMenu(menuIndex,buttonState,buttonCenterX,thisElement);
					}
					dynamicMenu.onmouseout = function() {
						menuFocus = 'button';
						submenuTimeout = setTimeout("hideMenu('button');",200);
					}
					
				}
				menuActive = true;
			}
		}
	}
	
	function hideMenu(getTrigger) {
		if(menuSystemActive) {
			if(getTrigger=="button" && menuFocus=="button") menuTimeout = setTimeout("doHideMenu();",200);
		}
	}
	
	function doHideMenu() {
		if(menuSystemActive && storeThisElement != null) {
			// show visitDate in ie6
			if(navigator.userAgent.indexOf("MSIE 5")!=-1 || navigator.userAgent.indexOf("MSIE 6")!=-1) toggleTicketsMenu(true);
			// hide menu
			if(flashMenu) {
				flashMenuObject.setMenuNormal(storeMenuIndex);
			} else {
				storeThisElement.className = getMenuClass(storeThisElement,false);
			}
			// switch submenu content off
			if(document.getElementById("submenu" + storeMenuIndex)) document.getElementById("submenu" + storeMenuIndex).style.display = "none";
			dynamicMenu.style.display = "none";
			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,buttonCenterX,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,buttonCenterX,thisElement);
				return false;
			}
		} else {
			return true;
		}
	}
	
	
// 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;
	}

// tabbed content functions

	var tabOn = 0;
	var tabTextOn = "";
	var allTabDivs = new Array;
	var allTabTitles = new Array;
	var allTabContent = new Array;
	
	function buildTabs() {
		if(document.getElementById("tabArea")) {
			// Get location query (to check for turning tabs on and off)
			var queryArray = new Array;
			queryArray = document.location.search.substring(1).split("&");
			if (queryArray.length > 0) {
				for (var i in queryArray) {
					// Look for tab numbers
					if (queryArray[i].toLowerCase().indexOf("tabnum") >= 0) {
						var querySplit = new Array;
						querySplit = queryArray[i].split("=");
						if (querySplit.length > 0) { tabOn = parseInt(querySplit[1]) - 1; break; }
					}
					// Look for tab names
					if (queryArray[i].toLowerCase().indexOf("tabname") >= 0) {
						var querySplit = new Array;
						querySplit = queryArray[i].split("=");
						if (querySplit.length > 0) { tabTextOn = unescape(querySplit[1].toLowerCase()); break; }
					}
				}
			}
			// find tabbedContent
			if(document.getElementsByClassName) {
				allTabDivs = document.getElementsByClassName("tabbedContent");
			} else {
				allTabDivs = getElementsByClass("tabbedContent",document,"div");
			}
			if(allTabDivs.length > 0) {
				// See if a tab name is specified and find the tab number associated with it
				if(tabTextOn != "") {
					for(i=0;i<allTabDivs.length;i++) {
						if(document.all) allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].innerText.toString();
						else allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].textContent.toString();
						if(tabTextOn == allTabTitles[i].toLowerCase()) { tabOn = i; break; }
					}
				}
				// loop through, get data, and hide all but chosen tab (first tab is default)
				for(i=0;i<allTabDivs.length;i++) {
					// tab title
					if(document.all) {
						allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].innerText.toString();
					} else {
						allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].textContent.toString();
					}
					// hide H2
					allTabDivs[i].getElementsByTagName("H2")[0].style.display = "none";
					// hide content?
					if(i == tabOn) {
						allTabDivs[i].className = "tabbedContent contentVisible";
					} else {
						allTabDivs[i].className = "tabbedContent contentHidden";
					}
				}
			}
			// Build tabs
			var myTabs = "<dl id='tabButtons'>";
			for (i=0; i<allTabDivs.length; i++) {
				if (i == tabOn) {
					myTabs += "<dd id='tab" + i + "' class='tab tabOn'>";
				} else {
					myTabs += "<dd id='tab" + i + "' class='tab tabOff'>";
				}
				myTabs += "<a href='javascript:doTab(" + i + ");'><span class='tabLeftEdge'><\/span><span class='tabContent'>" + allTabTitles[i] + "<\/span><\/a><\/dd>";
			}
			myTabs += "</dl>";
			document.getElementById("tabArea").innerHTML += myTabs;
			}
	}
	
	function doTab(getTab) {
		// check tab is different from current active tab
		if(getTab != tabOn) {
			// get elements again for IE
			if(document.getElementsByClassName) {
				allTabDivs = document.getElementsByClassName("tabbedContent");
			} else {
				allTabDivs = getElementsByClass("tabbedContent",document,"div");
			}
			// hide old content and change old tab class
			allTabDivs[tabOn].className = "tabbedContent contentHidden";
			document.getElementById("tab"+tabOn).className = "tab tabOff";
			// show new content and change new tab class
			allTabDivs[getTab].className = "tabbedContent contentVisible";
			document.getElementById("tab"+getTab).className = "tab tabOn";
			// store new tab
			tabOn = getTab;
		}
	}

// Hide a div and write a link to show/hide it

	var hiddenContent = new Array();
	var hiddenIndex = 0;
	
	function hideContent(getElement, getShowMessage, getHideMessage) {
		if(document.getElementById(getElement)) {
			// store element
			hiddenContent[hiddenIndex] = new Object();
			hiddenContent[hiddenIndex].element = getElement;
			// build show link
			hiddenContent[hiddenIndex].showLink = "<p><a href='javascript:toggleHiddenContent(" + hiddenIndex + ",true)'>" + getShowMessage + "<\/a><\/p>";
			// build hide link
			hiddenContent[hiddenIndex].hideLink = "<p><a href='javascript:toggleHiddenContent(" + hiddenIndex + ",false)'>" + getHideMessage + "<\/a><\/p>";
			// store content in array
			hiddenContent[hiddenIndex].content = hiddenContent[hiddenIndex].hideLink + document.getElementById(getElement).innerHTML;
			// call toggle function
			toggleHiddenContent(hiddenIndex,false);
			// increment
			hiddenIndex += 1;
		}
	}
	
	function toggleHiddenContent(getIndex, getDisplayMode) {
		if(getDisplayMode) {
			// show content
			document.getElementById(hiddenContent[getIndex].element).innerHTML = hiddenContent[getIndex].content;
		} else {
			// hide content
			document.getElementById(hiddenContent[getIndex].element).innerHTML = hiddenContent[getIndex].showLink;
		}
	}
	
// Key Rides panel slideshow

	var keyRidesPanel_items;
	var keyRidesPanel_old;
	var keyRidesPanel_new;

	function setupKeyRidesPanel() {
		thisPanel = document.getElementById("keyRidesPanel");
		if(thisPanel) {
			keyRidesPanel_items = thisPanel.getElementsByTagName("A");
			// choose random starting panel
			keyRidesPanel_old = Math.floor(Math.random() * keyRidesPanel_items.length);
			// hide all other panels
			for(i=0;i<keyRidesPanel_items.length;i++) {
				if(i != keyRidesPanel_old) keyRidesPanel_items[i].style.display = "none";
			}
			setInterval("switchKeyRidesPanel();",4000);
		}
	}

	function switchKeyRidesPanel() {
		keyRidesPanel_new = keyRidesPanel_old + 1;
		if(keyRidesPanel_new >= keyRidesPanel_items.length) keyRidesPanel_new = 0;
		fadeKeyRidesPanel();
	}
	
	function setOpacity(getOpacity) {
		oldElement = keyRidesPanel_items[keyRidesPanel_old];
		newElement = keyRidesPanel_items[keyRidesPanel_new];
		if(getOpacity>=5) newElement.style.display = "block";
		newElement.style.opacity = (getOpacity / 100);
		newElement.style.MozOpacity = (getOpacity / 100);
		newElement.style.KhtmlOpacity = (getOpacity / 100);
		newElement.style.filter = "alpha(opacity=" + getOpacity + ")";
		revOpacity = 100 - getOpacity;
		oldElement.style.opacity = (revOpacity / 100);
		oldElement.style.MozOpacity = (revOpacity / 100);
		oldElement.style.KhtmlOpacity = (revOpacity / 100);
		oldElement.style.filter = "alpha(opacity=" + revOpacity + ")";
		if(getOpacity==100) {
			oldElement.style.display = "none";
			keyRidesPanel_old = keyRidesPanel_new;
		}
	}

	function fadeKeyRidesPanel() {
		for(i=5;i<=100;i+=5) {
			setTimeout("setOpacity(" + i + ");",i*4);
		}
	}


// -->