﻿<!--

// Set dropdown menus to inactive - onload makes them active

	var menuSystemActive = false;
	
// detection of platforms

	// iphone + ipod safari
	var iosMode = false;
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) iosMode = true;
	
// Counter Variables
	var targetDate = new Date("10/21/2011 17:00:00"); // mm/dd/yyyy
	var oneDay = 1000*60*60*24; // milliseconds
	var oneHour = 1000*60*60; // milliseconds
	var oneMinute = 1000*60; // milliseconds
	var oneSecond = 1000; // milliseconds
	var allNumbers = new Array();
	
// image preload settings

	var preloadArray = new Array();
	var preloadCount = 0;
	function addPreloadImage(imgSrc) {
		preloadArray[preloadCount] = imgSrc;
		preloadCount +=1;
	}
	addPreloadImage("/images/themes/standard/common/inpage-button-over-bg-right.gif");
	addPreloadImage("/images/themes/standard/common/inpage-button-over-bg-left.gif");
	addPreloadImage("/images/themes/standard/common/redpanel-button-over-bg-right.gif");
	addPreloadImage("/images/themes/standard/common/redpanel-button-over-bg-left.gif");
	addPreloadImage("/images/themes/standard/common/redpanel-form-button-over-bg-right.gif");
	addPreloadImage("/images/themes/standard/common/redpanel-form-button-over-bg-left.gif");
	addPreloadImage("/images/themes/standard/common/to-top-over.gif");
	addPreloadImage("/images/common/menu/menu-panel-top.gif");
	addPreloadImage("/images/common/menu/menu-indicator-rear.gif");
	addPreloadImage("/images/common/menu/menu-indicator-front.png");
	addPreloadImage("/images/common/menu/menu-panel-bg-tile.gif");
	addPreloadImage("/images/common/menu/menu-panel-bottom.gif");

// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
			// H1
			flashH1();
			// tabbed content
			buildTabs();
			buildTabbedPanels();
			// sig image movies
			sigImageMovie();
			// news tickers
			initScrollers();
			initHorizontalScrollers();
			// clickable panels
			initClickablePanels();
			// ieFix for narrow select elements
			ieFixSelects();
			// jquery galleries setup
			$("a[rel=image_gallery_group]").fancybox({
				'cyclic'			: true,
				'transitionIn'		: 'elastic',
				'transitionOut'		: 'elastic',
				'overlayOpacity'	: 0.8,
				'overlayColor'		: '#000',
				'titlePosition'		: 'over',
				'titleFormat': function(title, currentArray, currentIndex, currentOpts) {
					return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
				}
			});
			// preload images
			var cache = [];
			for (i=0;i<preloadArray.length;i++) {
				var cacheImage = document.createElement('img');
				cacheImage.src = preloadArray[i];
				cache.push(cacheImage);
			}
			// show toolbar
			setTimeout("showToolbar();",2000);
			// show promotional side tab
			initSwarmTab(); //initSideTab();
			// jquery setup
			setupModals();
			// set up counter
			try { updateCounter(); } // Update Counter function
			catch(e) { }
			//
		}
	}
	
// jquery modal behaviours

	ticketsModalActive = true;
	
	var todayDate = new Date();
	var disableStartDate = new Date("November 15, 2011 06:00:00");
	var disableEndDate = new Date("November 15, 2011 10:30:00");
	if (disableStartDate <= todayDate && disableEndDate > todayDate) {
		ticketsModalActive = false;
	}
	
	hotelModalActive = true;
	eventsModalActive = true;

	function setupModals() {
		if(ticketsModalActive) {
			$(function() {
				$("#ticketsPanel #ticketsSubmitButton, .bookNowModal").click(function() {
					$.fancybox({
						'href'				: '/prices/modal/buy-now.aspx' + getTicketsCode(this.href),
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 565,
						'height'			: 640,
						'autoScale'			: false,
						'hideOnOverlayClick': false,
						'type'				: 'iframe',
						'scrolling'			: 'no',
						'onStart'			: function() { return pausePageElements(true); },
						'onClosed'			: function() { return pausePageElements(false); },
						'onCancel'			: function() { return pausePageElements(false); }
					});
					return false;
				});
			});
		}
		if(hotelModalActive) {
			$(function() {
				$("#ticketsPanel #hotelSubmitButton, .hotelModal").click(function() {
					$.fancybox({
						'href'				: 'https://thorpebreaks.merlinbreaks.co.uk/bookingforms/qwThorpe.php?Park=THMTPB&agent=TBL20&debug=display&method=POST&profile=thorpe&referer=http%3A%2F%2Fwww.thorpebreaks.co.uk&iframe=true&newWindow=true',
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 750,
						'height'			: ($.browser.msie) ? 320 : 285,
						'autoScale'			: false,
						'hideOnOverlayClick': false,
						'type'				: 'iframe',
						'scrolling'			: 'no',
						'onStart'			: function() { return pausePageElements(true); },
						'onClosed'			: function() { return pausePageElements(false); },
						'onCancel'			: function() { return pausePageElements(false); }
					});
					return false;
				});
			});
		}
		if(eventsModalActive) {
			$(function() {
				$(".eventModal").click(function() {
					$.fancybox({
						'href'				: '/build-event/default.aspx',
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 700,
						'height'			: 552,
						'padding'			: 0,
						'autoScale'			: false,
						'hideOnOverlayClick': false,
						'type'				: 'iframe',
						'scrolling'			: 'no',
						'onStart'			: function() { setFancyboxClass("eventModal"); pausePageElements(true); return true; },
						'onClosed'			: function() { setFancyboxClass(); pausePageElements(false); return true; },
						'onCancel'			: function() { setFancyboxClass(); pausePageElements(false); return true; }
					});
					return false;
				});
			});
		}
	}

	function doModalVideo(flvPath,returnNeeded,edgeMask) {
		if($) {
			$.fancybox({
				'overlayOpacity'	: 0.8,
				'overlayColor'		: '#000',
				'width'				: 720,
				'height'			: 320,
				'autoScale'			: false,
				'hideOnOverlayClick': false,
				'type'				: 'inline',
				'content'			: getModalVideoCode(flvPath,edgeMask),
				'scrolling'			: 'no',
				'onStart'			: function() { return pausePageElements(true); },
				'onClosed'			: function() { return pausePageElements(false); },
				'onCancel'			: function() { return pausePageElements(false); },
				'onCleanup'			: function() { return removeModalVideo(); }
			});
		}
		if(returnNeeded) return false;
	}
	
// ***************************
// *****  swarm side tab *****
// ***************************

	var swarmTabActive = false;
	var swarmTabOpen = false;
	var swarmTabImgLoad = 0;
	var swarmTabImgTarget = 5;
	var swarmSoundPlayerObject;
	var swarmArrowsPulse = false;
	var swarmArrowsPulseCounter = 0;
	var swarmArrowsPulseLimit = 6;
	
	var swarmTabHTML = "<div id='swarmTab'>";
	// sound player
	//if(flash.ver[9]) {
	//	var tempFla = new flashEmbedCode(9, "swarmSoundPlayerHolder", "\/flash\/swarm-sound-player.swf", 1, 1); // flashVer, getID, getSrc, getWidth, getHeight
	//	tempFla.addParam("quality","high");
	//	tempFla.addParam("wmode","transparent");
	//	tempFla.addParam("flashvars","sound=true&soundon=" + flashSound);
	//	swarmTabHTML += tempFla.buildFlashCode();
	//}
	// content
	swarmTabHTML += "<div id='swarmTabEdge'><img src='\/images\/swarm-side-tab\/swarm-tab.png' width='73' height='313' border='0' onload='swarmImgLoaded()' \/><a href='javascript:toggleSwarmTab();' onfocus='this.blur()'><img src='\/images\/common\/1pixel.gif' width='56' height='179' border='0'' \/><\/a><img id='swarmTabArrows' src='\/images\/swarm-side-tab\/swarm-tab-arrows.gif' width='22' height='150' border='0' onload='swarmImgLoaded()' \/><\/div>";
	swarmTabHTML += "<div id='swarmTabTopEdge'><img src='\/images\/swarm-side-tab\/swarm-panel-top.png' width='298' height='15' border='0' onload='swarmImgLoaded()' \/><\/div>";
	swarmTabHTML += "<div id='swarmTabContent'>";
	swarmTabHTML += "<a href='/rides/the-swarm.aspx'><img src='\/images\/swarm-side-tab\/main-swarm-image-v1.jpg' width='298' height='295' border='0' onload='swarmImgLoaded()' \/>";
	swarmTabHTML += "<span>Discover more...<\/span><\/a>";
	swarmTabHTML += "<\/div>";
	swarmTabHTML += "<div id='swarmTabBottomEdge'><img src='\/images\/swarm-side-tab\/swarm-panel-bottom.png' width='298' height='11' border='0' onload='swarmImgLoaded()' \/><\/div>";
	swarmTabHTML += "<\/div>";

	function initSwarmTab() {
		if(document.location.toString().indexOf("the-swarm") < 0 && document.body.className.indexOf("homepage") < 0) {
			if($) {
				// stress elements
				$("<div/>", {  
					id: "leftStressEdge"
				}).appendTo("#fullBrowserWidth");
				$("<div/>", {  
					id: "rightStressEdge"
				}).appendTo("#fullBrowserWidth");
				// ie png replacement
				if(navigator.appName == "Microsoft Internet Explorer") {
					$('#leftStressEdge').css("backgroundImage","url('\/images\/swarm-side-tab\/stress-edges-tile.gif')");
					$('#rightStressEdge').css("backgroundImage","url('\/images\/swarm-side-tab\/stress-edges-tile.gif')");
				}
				// add element
				$("<div/>", {  
					id: "swarmTabHolder",  
					html: swarmTabHTML 
				}).appendTo("body");
			}
		}
	}
	
	function swarmImgLoaded() {
		swarmTabImgLoad +=1;
		if(swarmTabImgLoad == swarmTabImgTarget) {
					
			// show?
			if($(window).width() >= 1120) {
				// animate in
				$("#swarmTab").animate({left: '73px'},0);
				$("#swarmTab").animate({left: '0px'},500);
				swarmTabActive = true;
				$('#swarmTabArrows').fadeOut(0);
				swarmTabArrows(true);
			}
			
			// resize behaviours
			$(window).resize(function() {
				if($(window).width() >= 1120 && !swarmTabActive) {
					$("#swarmTab").animate({left: '0px'},500);
					swarmTabActive = true;
					swarmTabArrows(false);
					swarmTabArrows(true);
				} else if($(window).width() < 1120 && swarmTabActive) {
					if(swarmTabOpen) {
						swarmTabOpen = false;
						document.getElementById("swarmTabHolder").className = "";
						$("#swarmTab").animate({left: '0px'}, 0);
						swarmTabArrows(false);
						swarmTabArrows(true);
						// sound
						//if(document.getElementById("swarmSoundPlayerHolder")) {
						//	swarmSoundPlayerObject.stopSound();
						//}
					} else {
						$("#swarmTab").animate({left: '73px'},200);
						swarmTabActive = false;
						swarmTabArrows(false);
					}
				}
			});
		}
	}
	
	function toggleSwarmTab() {
		if(swarmTabOpen) {
			// close tab
			swarmTabOpen = false;
			$("#swarmTab").animate({left: '298px'}, 200, function() {
				// Animation complete.
				document.getElementById("swarmTabHolder").className = "";
				$("#swarmTab").animate({left: '0px'}, 0);
				// sound
				//if(document.getElementById("swarmSoundPlayerHolder")) {
				//	swarmSoundPlayerObject.stopSound();
				//}
				swarmTabArrows(true);
			});
		} else {
			swarmTabArrows(false);
			// sound
			//if(document.getElementById("swarmSoundPlayerHolder")) {
			//	swarmSoundPlayerObject.playSound();
			//}
			// cancel arrows from now on
			swarmArrowsPulseCounter = swarmArrowsPulseLimit;
			// open tab
			document.getElementById("swarmTabHolder").className = "open";
			$("#swarmTab").animate({left: '298px'}, 0);
			swarmTabOpen = true;
			$("#swarmTab").animate({left: '0px'}, 500);
			// stress edges
			document.getElementById("leftStressEdge").className = "active";
			document.getElementById("rightStressEdge").className = "active";
			$("#leftStressEdge").fadeIn(0);
			$("#rightStressEdge").fadeIn(0);
			$("#leftStressEdge").fadeOut(2000, function() {
				document.getElementById("leftStressEdge").className = "";
			});
			$("#rightStressEdge").fadeOut(2000, function() {
				document.getElementById("rightStressEdge").className = "";
			});
		}
	}
	
	function swarmTabArrows(makeActive) {
		if(swarmArrowsPulseCounter < swarmArrowsPulseLimit) {
			if(makeActive) {
				if(!swarmArrowsPulse) {
					swarmArrowsPulse = true;
					swarmTabArrowsPulse();
				}
			} else {
				swarmArrowsPulse = false;
			}
		}
	}
	
	function swarmTabArrowsPulse() {
		if(swarmArrowsPulse && swarmArrowsPulseCounter < swarmArrowsPulseLimit) {
			swarmArrowsPulseCounter +=1;
			$('#swarmTabArrows').fadeIn(500,function() {
				$('#swarmTabArrows').fadeOut(500,function() {
					swarmTabArrowsPulse();
				});
			}); 
		}
	}

	
// fixed side tab code

	var sideTabActive = false;

	function initSideTab() {
		if(document.location.toString().indexOf("swarm") < 0) {
			if($) {
				// add element
				$("<div/>", {  
					id: "sideTabHolder",  
					html: "<div id=\"sideTab\"><a href=\"http:\/\/www.theswarm.co.uk\/\"><span><em>New ride for 2012!<\/em><\/span><\/a><\/div>" 
				}).appendTo("body");
					
				// show?
				if($(window).width() >= 1050) {
					// animate in
					$("#sideTab").animate({left: '57px'},0);
					$("#sideTab").animate({left: '0px'},500);
					sideTabActive = true;
				}
				
				// resize behaviours
				$(window).resize(function() {
					if($(window).width() >= 1050 && !sideTabActive) {
						$("#sideTab").animate({left: '0px'},500);
						sideTabActive = true;
					} else if($(window).width() < 1050 && sideTabActive) {
						$("#sideTab").animate({left: '57px'},200);
						sideTabActive = false;
					}
				});
			}
		}
	}

// add "Share" button to signature images

	function addShareButton(shareURL) {
		if (shareURL === undefined) shareURL = "";
		if (document.getElementById("mainImage") && shareURL.length > 0) {
			var shareButtonHTML = "";
			shareButtonHTML += "<div id=\"shareButtonArea\">\n";
			shareButtonHTML += "<div id=\"like\"><fb:like href=\"" + shareURL + "\" layout=\"button_count\" show_faces=\"false\" width=\"90\" action=\"like\" colorscheme=\"light\" /></div>\n";
			shareButtonHTML += "<div id=\"share\"><fb:share-button href=\"" + shareURL + "\" type=\"icon_link\" /></div>\n";
			shareButtonHTML += "</div>";
			document.getElementById("mainImage").innerHTML += shareButtonHTML;
			if (document.getElementById("sigMoviePlayer")) document.getElementById("shareButtonArea").className = "withFlash";
		}
		FB.init({status: true, cookie: true, xfbml: true});
	}
	
// pause flash and other animated objects in the page

	function pausePageElements(pauseState) {
		if (pauseState) { // pause the elements
			// homepage animation
			toggleHomeFeature(false);
			// sig image movie
			stopSigVideo();
			// text scrollers
			toggleScrollers(false);
		} else if (!pauseState) { // restart the elements
			// homepage animation
			toggleHomeFeature(true);
			// text scrollers
			toggleScrollers(true);
		}
		return true;
	}
	
// function to override Fancybox styles

	function setFancyboxClass(className) {
		if (className === undefined) $("#fancybox-outer").removeClass();
		else $("#fancybox-outer").removeClass().addClass(className);
	}
	
// function to return a tickets code that is relevant to the 'buy now' modal box

	function getTicketsCode(myHref) {
		var hrefCode = myHref.match(/[\?#]{1}code\=([\w\d\-]+)/);
		var returnCode = "";
		if (hrefCode instanceof Array) {
			switch (hrefCode[1]) {
				// was case "tickets": // General admission (tickets)
				//case "tickets": // General admission (tickets)
				// added in from offer
				//case "tickets":
				//	returnCode = "tickets2day";
				//	break;
				//case "tickets-full": // Full Park Individual Tickets
				//	returnCode = "tickets";
				//	break;
				case "tickets": // General admission (tickets)
					returnCode = "tickets";
					break;
				case "2day": // Full Park Individual Tickets
					returnCode = "tickets2day";
					break;
				case "3day": // Full Park Individual Tickets
					returnCode = "tickets3day";
					break;
				case "tickets-2-day": // Full Park Individual Tickets
					returnCode = "tickets2day";
					break;
				case "tickets-3-day": // Full Park Individual Tickets
					returnCode = "tickets3day";
					break;
				case "groups-79-1-day": // Full Park Individual Tickets
					returnCode = "grouptickets";
					break;
				case "groups-79-2-day": // Full Park Individual Tickets
					returnCode = "grouptickets2day";
					break;
				case "groups-79-3-day": // Full Park Individual Tickets
					returnCode = "grouptickets3day";
					break;
				case "groups-10-1-day": // Full Park Individual Tickets
					returnCode = "grouptickets10";
					break;
				case "groups-10-2-day": // Full Park Individual Tickets
					returnCode = "grouptickets102day";
					break;
				case "groups-10-3-day": // Full Park Individual Tickets
					returnCode = "grouptickets103day";
					break;
				case "groups": // Group Tickets
				case "groups-full": // Full Park Group Tickets (10+)
				// was case "groups7-9": // Full Park Group Tickets until 21st October (7-9)
				case "groups7-9": // Groups 10+ Half Price Offer
				case "groups-early": // Full Park Group Tickets EARLY BOOKING OFFER (10+)
					returnCode = "grouptickets";
					break;
				case "3-for-2": // Full Park Group Tickets EARLY BOOKING OFFER (10+)
					returnCode = "sundayoffer";
					break;
				// was case "groups10plus": // Groups 10+ Half Price Offer
					//returnCode = "grouptickets10";
					//break;
				case "groups10plus": // Groups 10+ Half Price Offer
					returnCode = "grouptickets10";
					break;
				case "fn-individual": // Groups 10+ Half Price Offer
					returnCode = "fntickets";
					break;
				case "fn-groups-7-9": // Groups 10+ Half Price Offer
					returnCode = "groupfntickets";
					break;
				case "fn-groups-10plus": // Groups 10+ Half Price Offer
					returnCode = "groupfntickets10";
					break;
				case "groups-2-day": // Full Park Group Tickets (10+)
				case "groups-7-9-2-day": // Full Park Group Tickets 2 day until 25th July 2010 (7-9)
				case "groups-10-offer-2-day": // Groups 10+ Half Price Offer 2 day offer
					returnCode = "grouptickets2day";
					break;
			}
		}
		if (returnCode.length > 0) return "?t=" + returnCode;
		else return "";
	}
	
// toolbar

	function showToolbar() {
		if(document.getElementById("jsToolbar")) {
			if($) {
				$("#toolbarFullWidth").animate({top: '0px'},500, function() {
					document.getElementById("jsToolbar").style.overflow = "visible";
				});
			} else {
				setPos(document.getElementById("toolbarFullWidth"),0,0);
				document.getElementById("jsToolbar").style.overflow = "visible";
			}
		}
	}
	
// 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 here!";
	
	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;
		}
	}
	
// submit accommodation form
	function submitAccommodationForm() {
		document.getElementById("accommodationForm").submit();
	}
	
// 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.
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		if(isIE) {
			if(document.getElementById('headerFlashMenu')) {
				flashMenuObject = document.getElementById('headerFlashMenu');
			} else if(window['headerFlashMenu']) {
				flashMenuObject = window['headerFlashMenu'];
			}
		} else {
			flashMenuObject = 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) {
				// switch submenu content off
				if(document.getElementById("submenu" + storeMenuIndex)) document.getElementById("submenu" + storeMenuIndex).style.display = "none";
				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";
					document.getElementById("submenu" + menuIndex).style.position = "relative";
					// 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
				if(document.getElementsByClassName) {
					firstLink = document.getElementById("submenuContainer" + menuIndex).getElementsByClassName("column")[0].getElementsByTagName("A")[0];
				} else {
					firstLink = getElementsByClass("column", document.getElementById("submenuContainer" + menuIndex), "div")[0].getElementsByTagName("A")[0];
				}
				firstLinkURL = firstLink.href.toString();
				firstLinkTarget = firstLink.target.toString();
				if(firstLink.getAttribute("onclick")) {
					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;
	
	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='tabContent'><strong>" + allTabTitles[i] + "<\/strong><\/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;
		}
	}

// tabbed panel functions

	var tabbedPanels = new Array();
		
	function buildTabbedPanels() {
		// find tabbed panels
		if(document.getElementsByClassName) {
			allTabbedPanels = document.getElementsByClassName("tabbedPanel");
		} else {
			allTabbedPanels = getElementsByClass("tabbedPanel",document,"div");
		}
		if(allTabbedPanels.length > 0) {
			for(i=0;i<allTabbedPanels.length;i++) {
				tabbedPanels[i] = new tabbedPanelObject(allTabbedPanels[i],i);
			}
		}
	}
	
	function tabbedPanelObject(getDiv,getIndex) {
		this.oDiv = getDiv;
		this.index = getIndex;
		this.activeTab = 0;
		if(document.getElementsByClassName) {
			this.tabArea = this.oDiv.getElementsByClassName("tabbedPanelTabs")[0];
			this.tabContent = this.oDiv.getElementsByClassName("tabbedPanelContent");
		} else {
			this.tabArea = getElementsByClass("tabbedPanelTabs",this.oDiv,"div")[0];
			this.tabContent = getElementsByClass("tabbedPanelContent",this.oDiv,"div");
		}
		this.tabContentCount = this.tabContent.length;
		// set up content areas + tabs
		if(this.tabContentCount > 1) {
			this.tabTitles = new Array();
			for(this.i=0; this.i < this.tabContentCount; this.i++) {
				// get tab titles
				if(document.all) {
					this.tabTitles[this.i] = this.tabContent[this.i].getElementsByTagName("H2")[0].innerText.toString();
				} else {
					this.tabTitles[this.i] = this.tabContent[this.i].getElementsByTagName("H2")[0].textContent.toString();
				}
				// hide content
				if(this.i == 0) {
					this.tabContent[this.i].className = "tabbedPanelContent contentVisible";
				} else {
					this.tabContent[this.i].className = "tabbedPanelContent contentHidden";
				}
			}
			// build tabs
			this.tabsCode = "";
			for(this.i=0; this.i < this.tabContentCount; this.i++) {
				if(this.i == 0) {
					this.tabsCode += "<a id='pTab_" + this.index + "_" + this.i + "' class='tabOn' ";
				} else {
					this.tabsCode += "<a id='pTab_" + this.index + "_" + this.i + "' class='tabOff' ";
				}
				this.tabsCode += "href='javascript:doPanelTab(" + this.index + "," + this.i + ");' onfocus='this.blur()'><span class='tabContent'><strong>" + this.tabTitles[this.i] + "<\/strong><\/span><\/a>";
			}
			this.tabArea.innerHTML = this.tabsCode;
		}
	}
	
	function doPanelTab(getPanelIndex, getTabIndex) {
		thisTabbedPanel = tabbedPanels[getPanelIndex];
		if(getTabIndex != thisTabbedPanel.activeTab) {
			// hide old content and change old tab class
			thisTabbedPanel.tabContent[thisTabbedPanel.activeTab].className = "tabbedPanelContent contentHidden";
			document.getElementById("pTab_"+getPanelIndex+"_"+thisTabbedPanel.activeTab).className = "tabOff";
			// show new content and change new tab class
			thisTabbedPanel.tabContent[getTabIndex].className = "tabbedPanelContent contentVisible";
			document.getElementById("pTab_"+getPanelIndex+"_"+getTabIndex).className = "tabOn";
			// store new tab
			thisTabbedPanel.activeTab = getTabIndex;
		}
	}
	
	// main image alt tag animated text

	var mainImageContainer;
	var mainImageAltString;
	var mainImageAltContainer;

	function setupMainImageAlt() {
		mainImageContainer = document.getElementById("mainImage");
		mainImageAltString = mainImageContainer.getElementsByTagName("IMG")[0].getAttribute("alt");
		var newdiv = document.createElement("div");
   		newdiv.setAttribute("id", "mainImageAlt");
		mainImageContainer.appendChild(newdiv);
		mainImageAltContainer = document.getElementById("mainImageAlt");
		writeMainImageAlt(mainImageAltString);
		mainImageContainer.onmouseover = function() {
			// move up
			if($) {
				$(mainImageAltContainer).stop(true,false);
				$(mainImageAltContainer).animate({top:'255px'}, 150);
			} else {
				setPos(mainImageAltContainer,0,255);
			}
		}
		mainImageContainer.onmouseout = function() {
			// move down
			if($) {
				$(mainImageAltContainer).stop(true,false);
				$(mainImageAltContainer).animate({top:'280px'}, 150);
			} else {
				setPos(mainImageAltContainer,0,280);
			}
		}
	}
	
	function writeMainImageAlt(rawString) {
		if(document.getElementById("mainImageAlt")) {
			if(rawString.indexOf("&copy;") > 0) {
				mainImageAltContainer.innerHTML = "<span><strong>" + rawString.split("&copy;")[0] + "<\/strong>&nbsp;&copy;" + rawString.split("&copy;")[1] + "<\/span>";
			} else if(rawString.indexOf("©") > 0) {
				mainImageAltContainer.innerHTML = "<span><strong>" + rawString.split("©")[0] + "<\/strong>&nbsp;&copy;" + rawString.split("©")[1] + "<\/span>";
			} else {
				mainImageAltContainer.innerHTML = "<span><strong>" + rawString + "<\/strong><\/span>";
			}
		}
	}
	
	// Fading Image Panel Code

	var activePanel = "A";
	var totalImages;
	var topPanel;

	function setupImagePanel() {
		totalImages = qImages.length;
		// setup CSS
		document.getElementById("panelA").style.width = qImageWidth + "px";
		document.getElementById("panelA").style.height = qImageHeight + "px";
		document.getElementById("panelB").style.width = qImageWidth + "px";
		document.getElementById("panelB").style.height = qImageHeight + "px";
		// set top panel
		topPanel = document.getElementById("panelA");
		// populate panel B
		document.getElementById("panelB").innerHTML = "<div id=\"panelImageB\" class=\"panelImage\"><\/div>";
		buildPanel("B");
	}
	
	function buildPanel(panelLetter) {
		qIndex += 1;
		if(qIndex >= totalImages) qIndex = 0;
		// image
		writeImageCode = "<img src=\"" + qImages[qIndex] + "\" alt=\"" + qAlts[qIndex] + "\" width=\"" + qImageWidth + "\" height=\"" + qImageHeight + "\" onload=\"imageDelay();\" \/>";
		// populate
		document.getElementById("panelImage" + panelLetter).innerHTML = writeImageCode;
	}
	
	function imageDelay() {
		// set timeout
		setTimeout("swapImagePanels();",2000);
	}
	
	function swapImagePanels() {
		if(activePanel=="A") {
			if($) {
  				$(topPanel).fadeOut(2000, function() {
    				// Animation complete.
					setTopPanelDisplay(false);
					// update alt string
					writeMainImageAlt(qAlts[qIndex]);
					// build next panel
					buildPanel("A");
  				});
			} else {
				setTopPanelDisplay(false);
				buildPanel("A");
			}
			activePanel = "B";
		} else {
			setTopPanelDisplay(true);
			if($) {
  				$(topPanel).fadeOut(0);
  				$(topPanel).fadeIn(2000, function() {
    				// Animation complete.
					// update alt string
					writeMainImageAlt(qAlts[qIndex]);
					// build next panel
					buildPanel("B");
  				});
			} else {
				buildPanel("B");
			}
			activePanel = "A";
		}
	}
	
	function setTopPanelDisplay(getMode) {
		if(getMode) topPanel.style.display = "block"
		else topPanel.style.display = "none";
	}

// 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;
			setupModals();
		} 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);
		}
	}


	
	// ie fix for narrow SELECT elements

	var ieSelects;
	var ieSelectsActive = true;

	function ieFixSelects() {
		if(ieSelectsActive && isIE) {
			// get elements again for IE
			if(document.getElementsByClassName) {
				ieSelects = document.getElementsByClassName("selectHolder");
			} else {
				ieSelects = getElementsByClass("selectHolder",document,"div");
			}
			// loop through
			if(ieSelects.length > 0) {
				for(i=0;i<ieSelects.length;i++) {
					selectObj = ieSelects[i].getElementsByTagName("SELECT")[0];
					ieSelects[i].style.position = "relative";
					ieSelects[i].style.width = parseFloat(ieSelects[i].offsetWidth) + "px";
					ieSelects[i].style.height = parseFloat(ieSelects[i].offsetHeight) + "px";
					selectObj.style.position = "absolute";
					selectObj.onmouseover = function() {
						this.style.width = "auto";
						if(parseFloat(this.offsetWidth) < 166) this.style.width = 166 + "px";
					}
					selectObj.onchange = function() {
						this.style.width = 166 + "px";
					}
					selectObj.onblur = function() {
						this.style.width = 166 + "px";
					}
				}
			}
		}
	}


	
// Horizontal Scroller

	var hScrollers = new Array();
	var scrollerCount = 0;
	var hs_activeIndex = -1;
	var hs_activeButton = null;
	var hs_oldMouseX = -1;
	var hs_prevTouchX = null;
	var hs_prevTouchY = null;
	var touchMoved = false;

	function initHorizontalScrollers() {
		if(document.getElementsByClassName) {
			findScrollers = document.getElementsByClassName("hScroller");
		} else {
			findScrollers = getElementsByClass("hScroller",document,"div");
		}
		if(findScrollers.length > 0) {
			for(x=0; x<findScrollers.length ;x++) {
				// create objects in an array
				hScrollers[scrollerCount] = new hScroller(findScrollers[x], scrollerCount);
				scrollerCount += 1;
			}
			document.onmousedown = function(ev) {
				if (window.event) ev = window.event; 
				trigger = ev.srcElement? ev.srcElement : ev.target; 
				if(trigger.className == "scrollbarControl") {
					hs_activeIndex = parseFloat(trigger.id.substring(1,trigger.id.indexOf("_")));
					hs_activeButton = document.getElementById("h" + hs_activeIndex + "_control");
					hs_activeButton.className = "scrollbarControl pressed";
					document.onmousemove = captureMouse;
					return false;
				}
			}
			document.onmouseup = function() {
				if(hs_activeIndex >= 0) {
					if(hs_activeButton) hs_activeButton.className = "scrollbarControl";
					hs_activeIndex = -1;
					hs_activeButton = null;
					document.onmousemove = null;
					hs_oldMouseX = -1;
					return false;
				}
			}
			function captureMouse(ev) { 
				ev = ev || window.event;
				if(hs_activeIndex >= 0) hScrollerUpdate(ev);
				return false;
			}
		}
	}

	function hScroller(getDiv, getIndex) {
		this.oDiv = getDiv;
		if(iosMode) getDiv.className = "hScroller iosScroller";
		this.hScrollerContainer = this.oDiv.getElementsByTagName("div")[0];
		this.oDivWidth = parseFloat(this.oDiv.offsetWidth);
		this.index = getIndex;
		this.hScrollerContainer.setAttribute("id","h" + this.index + "_hScrollerContainer");
		this.hScrollerStrip = this.oDiv.getElementsByTagName("dl")[0];
		this.hScrollerCount = this.hScrollerStrip.getElementsByTagName("dd").length;
		this.scrollbarX = 0;
		this.stripX = 0;
		// work out content width
		this.hScrollerStripWidth = 0;
		this.hScrollerPanels = this.hScrollerStrip.getElementsByTagName("dd");
		for(var i = 0; i < this.hScrollerPanels.length; i++) {
			this.hScrollerStripWidth += this.hScrollerPanels[i].offsetWidth + 10;
		}
		this.hScrollerStripWidth += 10;
		// scroller controls
		if(this.hScrollerStripWidth > this.oDivWidth) {
			// add scrollbar control
			this.newDiv = document.createElement('div');
			this.divID = "h" + this.index + "_hScrollerSliderControlArea";
			this.newDiv.setAttribute('id',this.divID);
			this.newDiv.setAttribute('class',"hScrollerSliderControlArea");
			this.newDiv.innerHTML = "<a id='h" + this.index + "_control' class='scrollbarControl'><\/a>";
			this.oDiv.appendChild(this.newDiv);
			this.hScrollerSliderControlArea = document.getElementById("h" + this.index + "_hScrollerSliderControlArea");
			this.hScrollerSliderControlArea.className = "hScrollerSliderControlArea";
			this.hScrollerSliderControlAreaWidth = parseFloat(this.hScrollerSliderControlArea.offsetWidth) -2;
			// set button width
			this.hScrollerButton = this.hScrollerSliderControlArea.getElementsByTagName("A")[0];
			this.sliderbuttonWidth = Math.floor(this.hScrollerSliderControlAreaWidth * (this.oDivWidth/this.hScrollerStripWidth));
			this.hScrollerButton.style.width = this.sliderbuttonWidth + "px";
			this.slideDistance = this.hScrollerSliderControlAreaWidth - this.sliderbuttonWidth;
			// touch behaviours
			this.hScrollerContainer.ontouchstart = function(e) {
				e.preventDefault();
				trigger = e.target;
				while(trigger.className != "hScrollerContainer") {
					trigger = trigger.parentNode;
				}
				hs_activeIndex = parseFloat(trigger.id.substring(1,trigger.id.indexOf("_")));
				hs_activeButton = document.getElementById("h" + hs_activeIndex + "_control");
				touchMoved = false;
			}
			this.hScrollerContainer.ontouchmove = function(e) {
				e.preventDefault();
				touchMoved = true;
				if(e.touches.length == 1) { // Only deal with one finger
					var touch = e.touches[0]; // Get the information for finger #1
					// store vales if start of touch
					if(hs_prevTouchX == null) {
						hs_prevTouchX = touch.pageX;
					 	hs_prevTouchY = touch.pageY;
					}
					// move image if touch has moved
					if(hs_prevTouchX != touch.pageX) {
						// calculate move distances
						moveX = hs_prevTouchX - touch.pageX; // reversed!
						scroller = hScrollers[hs_activeIndex];
						scroller.scrollbarX += moveX;
						hs_prevTouchX = touch.pageX;
						hScrollerMove();
					}
					// check for vertical scroll
					if(hs_prevTouchY != touch.pageY) {
						scrollIncrement = hs_prevTouchY - touch.pageY;
						window.scrollBy(0,scrollIncrement);
						hs_prevTouchY = touch.pageY + scrollIncrement;
					}
				}
			}
			this.hScrollerContainer.ontouchend = function(e) {
				e.preventDefault();
				if(!touchMoved) {
					var touchedObject = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);
					if(touchedObject.nodeType == 3) touchedObject = touchedObject.parentNode;
					var newEvent = document.createEvent('MouseEvents');
					newEvent.initEvent('click', true, true);
					touchedObject.dispatchEvent(newEvent);
				}
				hs_prevTouchX = null;
			  	hs_prevTouchY = null;
				hs_activeIndex = -1;
				hs_activeButton = null;
				touchMoved = false;
			}
		}
	}
	
	function hScrollerUpdate(ev) {
		if(ev.pageX) {
			newMouseX = ev.pageX;
		} else {
			newMouseX = window.event.clientX + document.body.scrollLeft;
		}
		// do move
		if(hs_oldMouseX < 0) {
			hs_oldMouseX = newMouseX;
		} else {
			scroller = hScrollers[hs_activeIndex];
			xShift = newMouseX - hs_oldMouseX;
			scroller.scrollbarX += xShift;
			// apply limits
			hs_oldMouseX = newMouseX;
			hScrollerMove();
		}
		return false;
	}
	
	function hScrollerMove() {
		scroller = hScrollers[hs_activeIndex];
		// apply limits
		if(scroller.scrollbarX < 0) scroller.scrollbarX = 0;
		if(scroller.scrollbarX > scroller.slideDistance) scroller.scrollbarX = scroller.slideDistance;
		setPos(hs_activeButton, scroller.scrollbarX+1, 1);
		// update list positioning
		if(scroller.scrollbarX > 0) {
			shiftFactor = scroller.scrollbarX / scroller.slideDistance;
			scrollerX = 0 - ((scroller.hScrollerStripWidth - scroller.oDivWidth) * shiftFactor);
		} else {
			scrollerX = 0;
		}
		dlObject = scroller.hScrollerStrip;
		setPos(dlObject, scrollerX, 0);
		scroller.stripX = scrollerX;
	}
	

// -->
