﻿<!--

	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	var IEVersion = -1;
	var documentReady = false;
	var activeDiv = "";
// 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)) || (navigator.userAgent.match(/iPad/i))) iosMode = true;
	
	// determine Internet Explorer version based on capabilities
	function checkIEVersion() {
		if (document.body.style.scrollbar3dLightColor!=undefined) {
			if (document.body.style.opacity!=undefined) {return 9;}
			else if (document.body.style.msBlockProgression!=undefined) {return 8;}
			else if (document.body.style.msInterpolationMode!=undefined) {return 7;}
			else if (document.body.style.textOverflow!=undefined) {return 6}
			else {return 5;}
		} else {
			return -1;
		}
	}
    	

// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			// activate header twinkles
			setTimeout("writeStar()", Math.floor(Math.random() * 250) + 1);
			
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
			// tabbed content
			buildTabs();
			// clickable panels
			initClickablePanels();
			
			// ios hide url bar
			if(iosMode) setTimeout("window.scrollTo(0,1);",100);
			
			// set up facebook comment area
			if(document.getElementById("socialPanel")) {
				$('.commentsBox').hide();
				loadComments();
				updateCommentCount();
			}
			
			//hide specified content
			hideContent();
			
			//setup jquery functions
			$(document).ready(function(){			   
				// disable in older IEs to stop the rounded corners breaking		
				if (IEVersion == -1 || IEVersion >= 9) {
					$('.fadeIn').each(function(i){
						$(this).delay(i*700).fadeIn(700);
					});
				}
				documentReady = true;
				
				// galleries
				$(".imageGallery a").fancybox({
					'cyclic'			: true,
					'transitionIn'		: 'elastic',
					'transitionOut'		: 'elastic',
					'overlayOpacity'	: 0.8,
					'overlayColor'		: '#000000',
					'titlePosition'		: 'over',
					'titleFormat': function(title, currentArray, currentIndex, currentOpts) {
						return '<span id="fancybox-title-over">Image ' + (currentIndex + 1) + ' / ' + currentArray.length + (title.length ? ' &nbsp; ' + title : '') + '</span>';
					}
				});
				
				$(".buyModal").click(function() {
					$.fancybox({
						'href'				: '/common-code/buy-now/mapusa-buy-modal.aspx' + getPassType(this.href),
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 610,
						'height'			: 500,
						'autoScale'			: false,
						'hideOnOverlayClick': false,
						'type'				: 'iframe',
						'scrolling'			: 'no'
					});
					return false;
				});
				
				$(".savingsCalcModal").click(function() {
					$.fancybox({
						'href'				: '/common-code/savings-calculator/mapusa-sc-modal.aspx',
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 610,
						'height'			: 655,
						'autoScale'			: false,
						'hideOnOverlayClick': false,
						'type'				: 'iframe',
						'scrolling'			: 'no'
					});
					return false;
				});		
			});
			
			//button listing setup
			//hide all button listing divs
			$("div.listing div.listingItem").addClass("hidden");
						
			// show default div
			if(activeDiv != "") {		
				$("a#" + activeDiv + "Button").addClass("active");
				$("div.listing div#" + activeDiv).removeClass("hidden");
			}
		}
	}
	

// ************** determine if anchor link is specified **************
//	function checkForAnchor() {
//		alert(window.location.hash);
//		//if((location.href).indexOf('#') > 0 && document.getElementById("buttonListing")) {
//		if((location.href).indexOf('#') > 0) {
//			// get what the link is from content after the hash
//			var specifiedAnchor = (location.href).substr((location.href).indexOf('#') + 1);
//			
//			// check  sub string to make sure there aren't any added URL parameters and take the text before that if so
//			if(specifiedAnchor.indexOf('?') > 0) {
//				specifiedAnchor = specifiedAnchor.substr(0, specifiedAnchor.indexOf('?'));
//			}
//			alert(specifiedAnchor);
//			swapListing(specifiedAnchor + 'Listing',480);
//		}
//	}


// ************** scroll to top ***************
	function scrollToTop() {
		$.scrollTo( { top:0, left:0}, 500 );
	}
	
// ************** slide to element ***************	
	function slideToElement(chosenElementID) {
		
		if(chosenElementID.indexOf('#') > 0) {
			// get what the ID is from content after the hash
			var chosenElementID = chosenElementID.substr(chosenElementID.indexOf('#'));
			
			// check  sub string to make sure there aren't any added URL parameters and take the text before that if so
			if(chosenElementID.indexOf('?') > 0) {
				chosenElementID = chosenElementID.substr(0, chosenElementID.indexOf('?'));
			}
		
			var eTop = $(chosenElementID).offset().top;
			$.scrollTo( { top:eTop - 10, left:0}, 500 );
		} else {
			return true;
		}
	}
	
// ************** logo stars **************
	var starArray = [];
	var currentStar = 0;
	
	// Create star object 
	function Star(starID, canvasArea) {
		this.lastID = Star.Instances.length;
		Star.Instances[this.lastID] = this;
		
		// set up object variables
		this.ID = starID;
		this.canvasID = canvasArea;
		this.currentFrame = 0;
		this.step = 14;
		this.frames = 15;
		this.restartPosition = -(this.step * this.frames);
		this.scrollSpeed = 35;
		
		// draw star area to canvas
		var myStar = document.createElement("div");
		myStar.setAttribute("id", this.ID);
		//myStar.setAttribute("class", "logoStar");
		document.getElementById(this.canvasID).appendChild(myStar);
		
		// choose star colour at random
		var randomColor = Math.floor(Math.random() * 4)
		
		if(randomColor == 3) {
			document.getElementById(this.ID).className = "logoStarWhite";
		} else if(randomColor == 2) {
			document.getElementById(this.ID).className = "logoStarRed";
		} else if(randomColor == 1) {
			document.getElementById(this.ID).className = "logoStarBlue";
		} else {
			document.getElementById(this.ID).className = "logoStarPurple";
		}
		
		// set star position
		var randomAngle = Math.floor(Math.random() * 360) + 1;
		var randomRadius = Math.floor(Math.random() * 23) + 70;
		var xOrigin = 190;
		var yOrigin = 87;
		var xPosition = xOrigin + randomRadius * (Math.cos(randomAngle * Math.PI / 180));
		var yPosition = yOrigin + randomRadius * (Math.sin(randomAngle * Math.PI / 180));
			
		document.getElementById(this.ID).style.left = xPosition + "px";
		document.getElementById(this.ID).style.top = yPosition + "px";
		
		// start animation
		this.timer = setInterval("Star.Instances[" + this.lastID + "].animate()", this.scrollSpeed);
	}
	
	// store instances of Star objects within an array (so we can call animate function later on!)
	Star.Instances = new Array();
	
	Star.prototype.animate = function () {
		this.currentFrame -= this.step;
		if (this.currentFrame == this.restartPosition){
			clearInterval(this.timer);
			document.getElementById(this.canvasID).removeChild(document.getElementById(this.ID));
		}
		$('#' + this.ID).css("background-position","0px " + this.currentFrame +"px");
	}
	
	function writeStar() {
		starArray[currentStar] = new Star("star" + currentStar, "logoArea");
		currentStar++;
		if(currentStar >= 20){
			currentStar = 0;
		}
		setTimeout("writeStar()", Math.floor(Math.random() * 250) + 1);
	}
	
	
	
// ************** function to return a pass code that is relevant to the 'buy now' modal box **************

	function getPassType(myHref) {
		var hrefCode = myHref.match(/[\?#]{1}code\=([\w\d\-]+)/);
		var returnCode = "";
		if (hrefCode instanceof Array) {
			switch (hrefCode[1]) {
				case "new": // New passes (default)
				case "renewal": // Renewals
					returnCode = "renewal";
					break;
			}
		}
		if (returnCode.length > 0) return "?t=" + returnCode;
		else return "";
	}
	

// ************** animated orbs **************
	function Orb(canvasID, imageToUse) {
		// Store basic local object variables
		this.lastID = Orb.Instances.length;
        Orb.Instances[this.lastID] = this;
		this.canvasID = canvasID;
		this.orbID = "orb" + this.lastID.toString();
		this.radians = 0;
		this.radIncrement = -0.1 + Math.random() * 0.25;
		this.image = imageToUse;
		
		// Create an HTML element of an orb
		var orbElement = document.createElement("div");
		var imageElement = document.createElement("img");
		orbElement.setAttribute("id", this.orbID);
		document.getElementById(this.canvasID).appendChild(orbElement);
		document.getElementById(this.orbID).className = "orb";
		imageElement.setAttribute("width", "200");
		imageElement.setAttribute("border", "0");
		imageElement.setAttribute("src", this.image);
		document.getElementById(this.orbID).appendChild(imageElement);
		
		// Position it off the bottom of the canvas and at a random place across it
		var canvasWidthArea = document.getElementById(this.canvasID).offsetWidth - document.getElementById(this.orbID).offsetWidth;
		document.getElementById(this.orbID).style.top = Math.floor(Math.random() * document.getElementById(this.canvasID).offsetHeight) + "px";
		document.getElementById(this.orbID).style.left = (Math.floor(Math.random() * canvasWidthArea) + 1) + "px";
		this.currentX = document.getElementById(this.orbID).offsetLeft;
		this.currentY = document.getElementById(this.orbID).offsetTop;
		document.getElementById(this.orbID).style.zIndex = (Math.floor(Math.random() * 100) + 1);
		
		// Start animation
		this.currSpeed = Math.floor(Math.random() * 1.5) + 1;
        this.timer = setInterval("Orb.Instances[" + this.lastID + "].animate()", 30);
	}
	
	Orb.Instances = new Array();
	
	Orb.prototype.animate = function() {
		// Move orb up
		this.radians += this.radIncrement;
		this.currentX += Math.sin(this.radians);
		this.currentY -= this.currSpeed;
		
		// Check it hasn't gone off the top
		var canvasWidthArea = document.getElementById(this.canvasID).offsetWidth - document.getElementById(this.orbID).offsetWidth;
		if (this.currentY < -(document.getElementById(this.orbID).offsetHeight)) {
			this.currentY = document.getElementById(this.canvasID).offsetHeight;
			document.getElementById(this.orbID).style.left = (Math.floor(Math.random() * canvasWidthArea) + 1) + "px";
			this.currentX = document.getElementById(this.orbID).offsetLeft;
			this.currSpeed = Math.floor(Math.random() * 1.5) + 1;
			this.radIncrement = -0.1 + Math.random() * 0.25;
			document.getElementById(this.orbID).style.zIndex = (Math.floor(Math.random() * 100) + 1);
		}
		
		// Position it
		document.getElementById(this.orbID).style.left = this.currentX + "px";
		document.getElementById(this.orbID).style.top = this.currentY + "px";
	}
	
// ************** button listing function **************
	function swapListing(chosenListing, scrollPosition) {
		// hide old div and deactivate button
		if(activeDiv != "") {		
			$("div.listing div#" + activeDiv).addClass("hidden");
			$("a#" + activeDiv + "button").removeClass("active");
		}
		// active button and tab content
		$("a#" + chosenListing + "button").addClass("active");
		$("div.listing div#" + chosenListing).removeClass("hidden");
		activeDiv = chosenListing;
		$.scrollTo( { top:scrollPosition, left:0}, 500 );
		return false;	
	}
	
// ************** 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]);
			}
		}
	}
	
// ************** form field validation function **************

	function validateField(getField,getMode,getFormAreaID) {
		isValid = true;
		switch(getMode) {
			case "req":
				if(isEmptyField(getField)) isValid = false;
				break;
			case "email": {
				if(!isValidEmail(getField.value)) isValid = false;
				break;
			}
			case "reqEmail": {
				if(!isValidEmail(getField.value)) isValid = false;
				if(isEmptyField(getField)) isValid = false;
				break;
			}
			case "postcode": {
				if(!/^[A-Za-z]{1,2}[0-9]{1,2}[A-Za-z]?\s*[0-9][A-Za-z]{2}$/.test(getField.value)) isValid = false;
				break;
			}
		}
		if(isValid) {
			document.getElementById(getFormAreaID).className = "formArea okay";
		} else {
			document.getElementById(getFormAreaID).className = "formArea error";
		}
	}
	
// ************** menu search field function **************

	var initSearchText = "Enter your email...";
	
	function enterSearchText(getField,getMode) {
		if(getMode) {
			// focus
			if(getField.value == initSearchText) getField.value = "";
		} else {
			// blur
			if(isEmptyField(getField)) {
				getField.value = initSearchText;
			}
		}
	}
	
// ************** 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";
		}
	}

// ************** Function to retun the length of an object (number of keys/value pairs) **************

	function oCount(myObject) { var counter = 0; for(keys in myObject) counter++; return counter; }


// ************** 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;
	}
	
// ************** 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;
	  }
	};
	
	
// ************** Email address validation **************
	
	function isValidEmail(src) {
		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(emailReg);
		return regex.test(src);
	}


// ************** Menu Stuff **************
	var dynamicMenuHolder;
	var dynamicMenu;
	var dynamicMenuIndicator;
	var dynamicMenuContent;
	var onIndicator;
	var menuFocus = "button";
	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,buttonLeft,buttonWidth,thisElement) {
		if(menuSystemActive) {
			clearTimeout(submenuTimeout);
			cancelHideMenu();
			if(menuActive && menuIndex != storeMenuIndex) {
				if(document.getElementById("submenu" + menuIndex)) {
					// switch submenu content off
					if(document.getElementById("submenu" + storeMenuIndex)) document.getElementById("submenu" + storeMenuIndex).style.display = "none";
					// turn off old button
					storeThisElement.className = getMenuClass(storeThisElement,false);
				} else {
					doHideMenu();
				}
			}
			if(!menuActive) {
				// get elements
				menuAreaWidth = parseFloat(document.getElementById("menuArea").offsetWidth);
				menuBaseX = parseFloat(document.getElementById("menuArea").offsetLeft);
				dynamicMenuHolder = document.getElementById("dynamicMenuHolder");
				dynamicMenu = document.getElementById("dynamicMenu");
				dynamicMenuIndicator = document.getElementById("dynamicMenuIndicator");
				dynamicMenuContent = document.getElementById("dynamicMenuContent");
				// set menu active
				menuActive = true;
			}
			//activation
			storeMenuIndex = menuIndex;
			storeButtonState = buttonState;
			storeThisElement = thisElement;
			thisElement.className = getMenuClass(thisElement,true);
			if(document.getElementById("submenu" + menuIndex)) {
				// Set menu class based on number of columns
				dynamicMenu.className = "menu" + menuCols[menuIndex] + "col alignMenuLeft";
				// Set zIndex + make visible
				dynamicMenu.style.zIndex = 1000;
				dynamicMenu.style.display = "block";
				// Set horizontal position
				menuWidth = parseFloat(dynamicMenuContent.offsetWidth);
				xOffset = menuBaseX + buttonLeft + 7;
				dynamicMenuIndicatorX = 2;
				dynamicMenuIndicator.style.width = (buttonWidth + 17) + "px";
				// align right if too wide to go left
				if((xOffset + menuWidth) > parseFloat(dynamicMenuHolder.offsetWidth)) {
					xOffset = xOffset + buttonWidth - (parseFloat(dynamicMenu.offsetWidth)) + 4;
					document.getElementById("submenu" + menuIndex).className = "noDisplay alignRight";
					dynamicMenuIndicatorX = menuWidth - (buttonWidth) - 19;
					dynamicMenu.className = "menu" + menuCols[menuIndex] + "col alignMenuRight";
				}
				// position submenu
				setPos(dynamicMenu,xOffset,118);
				//position indicator graphic
				setPos(dynamicMenuIndicator,dynamicMenuIndicatorX,-6);
				// switch submenu content on
				document.getElementById("submenu" + menuIndex).style.display = "block";
				document.getElementById("submenu" + menuIndex).style.position = "relative";
				switch(menuCols[menuIndex]) {
					case 1:
					document.getElementById("submenu" + menuIndex).style.width = 230 + "px";
					break;
					case 2:
					document.getElementById("submenu" + menuIndex).style.width = 440 + "px";
					break;
					case 3:
					document.getElementById("submenu" + menuIndex).style.width = 650 + "px";
					break;
				}
				// rollover behaviour
				dynamicMenu.onmouseover = function() {
					menuFocus = "menu";
					showMenu(menuIndex,buttonState,buttonLeft,buttonWidth,thisElement);
				}
				dynamicMenu.onmouseout = function() {
					if(menuFocus == "menu") {
						menuFocus = 'button';
						submenuTimeout = setTimeout("hideMenu('button');",50);
					}
				}
			} else {
				dynamicMenu.style.display = "none";
			}
	}
}
	
	function hideMenu(getTrigger) {
		if(menuSystemActive) {
			if(getTrigger=="button" && menuFocus=="button") menuTimeout = setTimeout("doHideMenu();",100);
		}
	}
	
	function doHideMenu() {
		if(menuSystemActive && storeThisElement != null) {
			// hide menu
			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);
			clearTimeout(submenuTimeout);
			menuTimeout = null;
		}
	}
	
	function menuAreaClick(menuIndex,buttonState,buttonLeft,buttonWidth,thisElement) {
		if(menuSystemActive) {
			if(iosMode && menuActive && storeMenuIndex == menuIndex) {
				// hide menu
				doHideMenu();
				return false;
			} else if(menuActive && storeMenuIndex == menuIndex) {
				// close menu
				doHideMenu();
				return true;
			} else {
				// show menu
				showMenu(menuIndex,buttonState,buttonLeft,buttonWidth,thisElement);
				return false;
			}
		} else {
			return true;
		}
	}
	
	// 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>";
			}
		}
	}

	// 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 (ii = 0, j = 0; ii < elsLen; ii++) {
			if ( pattern.test(els[ii].className) ) {
				classElements[j] = els[ii];
				j++;
			}
		}
		return classElements;
	}
	
// ************** tabbed content functions **************

	var tabOn = 0;
	var tabTextOn = "";
	var allTabDivs = new Array;
	var allTabTitles = new Array;
	var allTabContent = new Array;
	var allVRcontent = 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;
							var eTop = $('#tabArea').offset().top;
							$.scrollTo( { top:eTop - 10, left:0}, 1000 );
							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 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'>" + 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;
		}
	}
	
// ************** Fading Image Panel Code **************

	var activePanel = "A";
	var totalImages;
	var topPanel;

	function setupImagePanel(imageDelayTime) {
		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", imageDelayTime);
	}
		
	function buildPanel(panelLetter, imageDelayTime) {
		qIndex += 1;
		if(qIndex >= totalImages) qIndex = 0;
		writeImageCode = "";
		//link if specified
		if(qURLs[qIndex] != "") {
			writeImageCode = "<a href=\"" + qURLs[qIndex] + "\" target=\"_" + qTargets[qIndex] + "\">";
		}
		// image
		writeImageCode += "<img src=\"" + qImages[qIndex] + "\" alt=\"" + qAlts[qIndex] + "\" width=\"" + qImageWidth + "\" height=\"" + qImageHeight + "\" onload=\"imageDelay(" + imageDelayTime + ");\" \/>";
		if(qURLs[qIndex] != "") writeImageCode += "<\/a>";
		// populate
		document.getElementById("panelImage" + panelLetter).innerHTML = writeImageCode;
	}
	
	function imageDelay(imageDelayTime) {
		// set timeout
		setTimeout(function(){swapImagePanels(imageDelayTime)},imageDelayTime);
	}
	
	function swapImagePanels(imageDelayTime) {
		if(activePanel=="A") {
			if($) {
  				$(topPanel).fadeOut(1200, function() {
    				// Animation complete.
					setTopPanelDisplay(false);
					// update alt string
					writeMainImageAlt(qAlts[qIndex]);
					// build next panel
					buildPanel("A", imageDelayTime);
  				});
			} else {
				setTopPanelDisplay(false);
				buildPanel("A", imageDelayTime);
			}
			activePanel = "B";
		} else {
			setTopPanelDisplay(true);
			if($) {
  				$(topPanel).fadeOut(0);
  				$(topPanel).fadeIn(1200, function() {
    				// Animation complete.
					// update alt string
					writeMainImageAlt(qAlts[qIndex]);
					// build next panel
					buildPanel("B", imageDelayTime);
  				});
			} else {
				buildPanel("B", imageDelayTime);
			}
			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 allHiddenContent = new Array();
	var hiddenIndex = 0;
	
	function hideContent(divToHide,divShowText,divHideText) {
		if (divToHide === undefined) divToHide = "termsConditions";
		if (divShowText === undefined) divShowText = "Show Terms &amp; Conditions";
		if (divHideText === undefined) divHideText = "Hide Terms &amp; Conditions";
		
		if(document.getElementsByClassName) {
			findObjects = document.getElementsByClassName(divToHide);
		} else {
			findObjects = getElementsByClass(divToHide,document,"div");
		}
		if(findObjects.length > 0) {
			for(i=0;i<findObjects.length;i++) {
				allHiddenContent[hiddenIndex] = new hiddenContent(findObjects[i], divShowText, divHideText);
			}
		}
	}
	
	function hiddenContent(getDiv, getShowText, getHideText) {
		this.oDiv = getDiv;
		this.index = hiddenIndex;
		this.showText = getShowText;
		this.hideText = getHideText;
		hiddenIndex +=1;
		this.oDiv.innerHTML = "<p><a href='javascript:toggleHiddenContent(" + this.index + ",true)'>" + this.showText + "<\/a><\/p><div class='hiddenContentMask'>" + this.oDiv.innerHTML + "<\/div>";
		this.contentMask = this.oDiv.getElementsByTagName("DIV")[0];
		if($) {
			$(this.contentMask).slideUp(0);
		} else {
			this.contentMask.style.display = "none";
		}
	}
	
	function toggleHiddenContent(getIndex, getDisplayMode) {
		thisHiddenContent = allHiddenContent[getIndex];
		if(getDisplayMode) {
			// show content
			if($) {
				$(thisHiddenContent.contentMask).stop(false,true);
				$(thisHiddenContent.contentMask).slideDown(500);
			} else {
				thisHiddenContent.contentMask.style.display = "block";
			}
			thisHiddenContent.oDiv.getElementsByTagName("P")[0].innerHTML = "<a href='javascript:toggleHiddenContent(" + thisHiddenContent.index + ",false)'>" + thisHiddenContent.hideText + "<\/a>";
		} else {
			// hide content
			if($) {
				$(thisHiddenContent.contentMask).stop(false,true);
				$(thisHiddenContent.contentMask).slideUp(500);
			} else {
				thisHiddenContent.contentMask.style.display = "none";
			}
			thisHiddenContent.oDiv.getElementsByTagName("P")[0].innerHTML = "<a href='javascript:toggleHiddenContent(" + thisHiddenContent.index + ",true)'>" + thisHiddenContent.showText + "<\/a>";
		}
	}


// -->
