﻿<!--

// 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/17/2011 00: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/common/menu-2012/cwoa-megamenu-top-sprite.png");
	addPreloadImage("/images/common/menu-2012/cwoa-megamenu-tile-sprite.png");
	addPreloadImage("/images/common/menu-2012/cwoa-megamenu-bottom-sprite.png");

// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
			// tabbed content
			buildTabs();
			// sig image movies
			sigImageMovie();
			// news tickers
			initScrollers();
			// calendar
			initCalendar();
			// clickable panels
			initClickablePanels();
			// ieFix for narrow select elements
			ieFixSelects();
			// preload images
			var cache = [];
			for (i=0;i<preloadArray.length;i++) {
				var cacheImage = document.createElement('img');
				cacheImage.src = preloadArray[i];
				cache.push(cacheImage);
			}
			// jquery setup
			setupModalBoxes();
			// show promotional side tab
			//initSideTab();
			// show crisis panel?
			if(crisisActive) {
				if($) {
					$.fancybox({
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 550,
						'height'			: 300,
						'autoScale'			: false,
						'hideOnOverlayClick': true,
						'content'			: buildCrisisContent(),
						'scrolling'			: 'no',
						'onStart'			: function() { document.cookie = 'crisis=viewed'; }
					});
				}
			}
			// jquery setup
			$(function() {
				// jump to correct location in tabs
				if (isAnchorInPage) {
					var eTop = $('#' + urlAnchor).offset().top;
					window.scrollTo(0,eTop);
				}
			});
			// set up counter
			try { updateCounter(); } // New Google tracking code
			catch(e) { } 
			//
		}
	}
	
// function to show jQuery modal boxes

	function buildCrisisContent() {
		crisisString = "";
		crisisString += "<div class='redPanel'><div class='redPanelTop'><\/div><div class='redPanelContent'><div class='contentArea'><div class='logoArea'><img src='/images/crisis/modal/cwoa-logo.gif' width='92' height='80' alt='Chessington World of Adventures Resort'><\/div><h1>" + crisisTitle + "<\/h1><p>" + crisisContent + "<\/p><div class='clearBoth'><\/div><\/div><\/div><div class='redPanelBottom'><\/div></div>";
		return crisisString;
	}

	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;
	}

	function setupModalBoxes() {
		if(ticketsModalActive) {
			$(function() {
				$(".bookNowModal").click(function() {
					$.fancybox({
						'href'				: '/tickets/modal/buy-now.aspx' + getTicketsCode(this.href),
						'overlayOpacity'	: 0.8,
						'overlayColor'		: '#000',
						'width'				: 550,
						'height'			: 580,
						'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;
				});
			});
		}
		$(function() {
			$(".hotelModal").click(function() {
				$.fancybox({
					'href'				: 'http://chessingtonholidays.merlinbreaks.co.uk/bookingforms/toChessingtonCalendar.php?agent=CHB11&debug=display&iframe=true&method=GET&newWindow=true&preview=true&searchByDate=false&noHeading=true&jQuery4=true',
					'overlayOpacity'	: 0.8,
					'overlayColor'		: '#000',
					'width'				: 730,
					'height'			: 420,
					'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;
			});
		});

		$(".rainyDay").click(function() {
			$.fancybox({
				'href'				: '/tickets/offers/rainy-day.aspx',
				'overlayOpacity'	: 0.8,
				'overlayColor'		: '#000',
				'width'				: 550,
				'height'			: 420,
				'autoScale'			: false,
				'hideOnOverlayClick': false,
				'type'				: 'iframe',
				'scrolling'			: 'no'
			});
			return false;
		});

	}
	
// fancybox modal video

	function doModalVideo(flvPath) {
		if($) {
			$.fancybox({
				'overlayOpacity'	: 0.8,
				'overlayColor'		: '#000',
				'width'				: 550,
				'height'			: 330,
				'autoScale'			: false,
				'hideOnOverlayClick': false,
				'type'				: 'inline',
				'content'			: getModalVideoCode(flvPath),
				'scrolling'			: 'no',
				'onStart'			: function() { return pausePageElements(true); },
				'onClosed'			: function() { return pausePageElements(false); },
				'onCancel'			: function() { return pausePageElements(false); },
				'onCleanup'			: function() { return removeModalVideo(); }
			});
		}
		return false;
	}
	
// pause flash and other animated objects in the page

	function pausePageElements(pauseState) {
		if (pauseState) { // pause the elements
			// header logo
			toggleLogo(false);
			// carousel
			toggleCarousel(false);
			// sig image movie
			stopSigVideo();
			// text scrollers
			toggleScrollers(false);
		} else if (!pauseState) { // restart the elements
			// header logo
			toggleLogo(true);
			// carousel
			toggleCarousel(true);
			// text scrollers
			toggleScrollers(true);
		}
		return true;
	}
	
	
// 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]) {
				case "tickets": // General admission (tickets)
				case "tickets-full": // Full Park Individual Tickets
					returnCode = "tickets";
					break;
				case "tickets-zoo": // Zoo Days Individual Tickets
					returnCode = "zoodays";
					break;
				case "groups-zoo": // Zoo Days Group Tickets (10+)
					returnCode = "groupzoodays";
					break;
				case "tickets-2-day": // Full Park Individual Tickets
					returnCode = "tickets2day";
					break;
				case "groups": // Group Tickets
				case "groups-full": // Full Park Group Tickets (10+)
				case "groups-7-9": // Full Park Group Tickets until 21st October (7-9)
				case "groups-10-offer": // Groups 10+ Half Price Offer
				case "groups-early": // Full Park Group Tickets EARLY BOOKING OFFER (10+)
					returnCode = "grouptickets";
					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 "";
	}
	
// 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]);
			}
		}
	}
	
// side tab

	var sideTabActive = false;

	function initSideTab() {
		if(document.location.toString().indexOf("\/wild-adventure\/") < 0) {
			if($) {
				
				// add element
				$("<div/>", {  
					id: "sideTabHolder",  
					html: "<div id=\"sideTab\"><a href=\"\/wild-adventure\/\"><span><em>Wild Adventure!<\/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;
					}
				});
			}
		}
	}
	
// back to top function
	
	function toTop() {
		window.scroll(0,0);
		return false;
	}
	
// 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 toggleFormElements(getMode) {
		if(document.getElementById("purchaseSelect")) {
			if(getMode) {
				document.getElementById("purchaseSelect").style.visibility = "visible";
			} else {
				document.getElementById("purchaseSelect").style.visibility = "hidden";
			}
		}
	}
	
// 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 Stuff

	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	var dynamicMenuHolder;
	var dynamicMenu;
	var dynamicMenuGap;
	var dynamicMenuGapLeft;
	var dynamicMenuGapRight;
	var menuFocus = "button";
	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 replaceMenuClass(src,className) {
		if (src.className) return src.className.replace(/(menu[^\s]+)?/, className);
		else return className;
	}
	
	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";
					// hide 'on' button
					storeThisElement.className = replaceMenuClass(storeThisElement, 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");
				dynamicMenuGap = document.getElementById("dynamicMenuGap");
				dynamicMenuGapRight = document.getElementById("dynamicMenuGapRight");
				dynamicMenuContent = document.getElementById("dynamicMenuContent");
				// set menu active
				menuActive = true;
			}
			//activation
			storeMenuIndex = menuIndex;
			storeButtonState = buttonState;
			storeThisElement = thisElement;
			thisElement.className = replaceMenuClass(thisElement, getMenuClass(thisElement,true));
			if(document.getElementById("submenu" + menuIndex)) {
				// Set menu class based on number of columns
				dynamicMenu.className = "menu" + menuCols[menuIndex] + "col";
				// Set zIndex + make visible
				dynamicMenu.style.zIndex = 1000;
				dynamicMenu.style.display = "block";
				// Set horizontal position
				menuWidth = parseFloat(dynamicMenuContent.offsetWidth);
				// Set horizontal position
				xOffset = Math.floor((menuBaseX + buttonLeft + (buttonWidth / 2)) - (menuWidth / 2));
				if((xOffset + menuWidth) > 982) {
					xOffset = 982 - menuWidth;
				} else if(xOffset < -1) {
					xOffset = -1;
				}
				setPos(dynamicMenu,xOffset,90);
				// position the menu gap
				dynamicMenuGap.style.width = (buttonWidth) + "px";
				dynamicMenuGapRight.style.width = (buttonWidth-10) + "px";
				gapX = (buttonLeft + menuBaseX) - xOffset;
				setPos(dynamicMenuGap,gapX,2);
				// 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 = 2578 + "px";
					break;
					case 2:
					document.getElementById("submenu" + menuIndex).style.width = 513 + "px";
					break;
					case 3:
					document.getElementById("submenu" + menuIndex).style.width = 748 + "px";
					break;
					case 4:
					document.getElementById("submenu" + menuIndex).style.width = 983 + "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 = replaceMenuClass(storeThisElement, getMenuClass(storeThisElement,false));
			// show 'on' menu
			if(menuOnIndex >= 0) {
				document.getElementById("menu" + menuOnIndex).className = replaceMenuClass(document.getElementById("menu" + menuOnIndex), "menuOn");
			}
			// 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) {
				// do nothing
				return false;
			} else {
				// show menu
				showMenu(menuIndex,buttonState,buttonLeft,buttonWidth,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;
	}
	
// 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
			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) < 180) this.style.width = 180 + "px";
				}
				selectObj.onchange = function() {
					this.style.width = 180 + "px";
				}
				selectObj.onblur = function() {
					this.style.width = 180 + "px";
				}
				
			}
		}
	}
	
// tabbed content functions

	var tabOn = 0;
	var tabTextOn = "";
	var allTabDivs = new Array;
	var allTabTitles = new Array;
	var allTabContent = new Array;
	var urlAnchor = unescape(document.location.hash.substring(1));
	var isAnchorInPage = false;
	
	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");
			}
			// look for anchor in url
			if(urlAnchor != "") {
				// find which tabbedContent container has this anchor inside it
				for(i=0; i<allTabDivs.length; i++) {
					allAnchors = allTabDivs[i].getElementsByTagName("A");
					for(x=0; x<allAnchors.length; x++) {
						if(allAnchors[x].id == urlAnchor) {
							tabOn = i;
							isAnchorInPage = true;
						}
					}
				}
			}
			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)
				if(tabOn >= allTabDivs.length) tabOn = 0;
				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 + ");' onfocus='this.blur()'><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;
		}
	}
	
	function doHealthyTab() {
		// find index of Healthy Eating tab and trigger it
		for (i=0; i<allTabDivs.length; i++) {
			if(document.getElementById("tab" + i).innerHTML.indexOf("Healthy Eating") > 0) doTab(i);
		}
	}
	
// Calendar setup functions
	
	function initCalendar() {
		if(document.getElementById("calendarKey")) {
			allKeys = document.getElementById("calendarKey").getElementsByTagName("DD");
			if(allKeys.length > 0) {
				for (x=0; x<allKeys.length; x++) {
					// look for extraKeyInfo span
					if(document.getElementsByClassName) {
						extraInfo = allKeys[x].getElementsByClassName("extraKeyInfo");
					} else {
						extraInfo = getElementsByClass("extraKeyInfo",allKeys[x],"span");
					}
					if(extraInfo[0]) {
						// hide extra info
						allKeys[x].className = "extraInfoHidden";
						allKeys[x].setAttribute("title", "Click for more information");
						allKeys[x].onclick = function() {
							toggleCalendarKeyInfo(this);
						}
					}
				}
			}
		}
	}
	
	function toggleCalendarKeyInfo(getKey) {
		if(getKey.className == "extraInfoHidden") {
			// expand
			getKey.className = "extraInfoVisible";
			getKey.setAttribute("title", "Click to hide extra information");
		} else {
			// close
			getKey.className = "extraInfoHidden";
			getKey.setAttribute("title", "Click for more information");
		}
	}
	
// 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 = "<p id=\"panelImageB\" class=\"panelImage\"><\/p>";
		buildPanel("B");
	}
	
	function buildPanel(panelLetter) {
		qIndex += 1;
		if(qIndex >= totalImages) qIndex = 0;
		// image
		writeImageCode = "";
		if(qURLs[qIndex] != "") {
			writeImageCode = "<a href=\"" + qURLs[qIndex] + "\" target=\"_" + qTargets[qIndex] + "\"";
			if (qModals[qIndex] != "") writeImageCode += " class=\"" + qModals[qIndex] + "\"";
			writeImageCode += ">";
		}
		writeImageCode += "<img src=\"" + qImages[qIndex] + "\" alt=\"" + qAlts[qIndex] + "\" width=\"" + qImageWidth + "\" height=\"" + qImageHeight + "\" border=\"0\" onload=\"imageDelay();\" \/>";
		if(qURLs[qIndex] != "") writeImageCode += "<\/a>";
		// populate
		document.getElementById("panelImage" + panelLetter).innerHTML = writeImageCode;
		// refresh modal boxes
		setupModalBoxes();
	}
	
	function imageDelay() {
		// set timeout
		setTimeout("swapImagePanels();",3000);
	}
	
	function swapImagePanels() {
		if(activePanel=="A") {
			if($) {
				$(topPanel).fadeOut(2000, function() {			 
					// Animation complete.
					buildPanel("A");
				});
			} else {
				setTopPanelDisplay(false);
				buildPanel("A");
			}
			activePanel = "B";
		} else {
			if($) {
				$(topPanel).fadeIn(2000, function() {			 
					// Animation complete.
					buildPanel("B");
				});
			} else {
				setTopPanelDisplay(true);
				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;
		} else {
			// hide content
			document.getElementById(hiddenContent[getIndex].element).innerHTML = hiddenContent[getIndex].showLink;
		}
	}


// -->

