﻿<!--

	var isIE = navigator.appName.indexOf("Microsoft") != -1;

// Set dropdown menus to inactive - onload makes them active

	var menuSystemActive = false;
	
// detection of platforms

	// iphone + ipod safari
	var iphoneMode = false;
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) iphoneMode = true;
	
// image preload settings

	var preloadArray = new Array();
	var preloadCount = 0;
	function addPreloadImage(imgSrc) {
		preloadArray[preloadCount] = imgSrc;
		preloadCount +=1;
	}
	addPreloadImage("/images/common/menu/tab-bg-basic.gif");
	addPreloadImage("/images/common/menu/gap-tile.gif");
	addPreloadImage("/images/panels/continue-button-over.gif");
	if(navigator.userAgent.indexOf("MSIE 5")!=-1 || navigator.userAgent.indexOf("MSIE 6")!=-1) {
		addPreloadImage("/images/common/menu/menu-ie6-top-1col.png");
		addPreloadImage("/images/common/menu/menu-ie6-top-2col.png");
		addPreloadImage("/images/common/menu/menu-ie6-top-3col.png");
		addPreloadImage("/images/common/menu/menu-ie6-bg-tile-1col.gif");
		addPreloadImage("/images/common/menu/menu-ie6-bg-tile-2col.gif");
		addPreloadImage("/images/common/menu/menu-ie6-bg-tile-3col.gif");
		addPreloadImage("/images/common/menu/menu-ie6-bottom-1col.png");
		addPreloadImage("/images/common/menu/menu-ie6-bottom-2col.png");
		addPreloadImage("/images/common/menu/menu-ie6-bottom-3col.png");
		addPreloadImage("/images/common/menu/gap-ie6-left.gif");
		addPreloadImage("/images/common/menu/gap-ie6-right.gif");
	} else {
		addPreloadImage("/images/common/menu/menu-top-1col.png");
		addPreloadImage("/images/common/menu/menu-top-2col.png");
		addPreloadImage("/images/common/menu/menu-top-3col.png");
		addPreloadImage("/images/common/menu/menu-bg-tile-1col.png");
		addPreloadImage("/images/common/menu/menu-bg-tile-2col.png");
		addPreloadImage("/images/common/menu/menu-bg-tile-3col.png");
		addPreloadImage("/images/common/menu/menu-bottom-1col.png");
		addPreloadImage("/images/common/menu/menu-bottom-2col.png");
		addPreloadImage("/images/common/menu/menu-bottom-3col.png");
		addPreloadImage("/images/common/menu/gap-left.png");
		addPreloadImage("/images/common/menu/gap-right.png");
	}
	

// onload triggers

	function pageTrigger() {
		if(graphicVersion) {
			menuSystemActive = true;
			// fix for submit forms by hitting 'return'
			inputSubmitByReturn();
			// tabbed content
			buildTabs();
			// sifr
			sifrStart();
			// sig image movies
			sigImageMovie();
			// news tickers
			initScrollers();
			// calendar
			initCalendar();
			// clickable panels
			initClickablePanels();
			// jquery setups
			$(function() {
				// lightbox
				$('.gallery a').lightBox();
			});
			$(document).ready(function() {
				$("a.iframe").fancybox({
					'width':			900,
					'height':			570,
					'overlayColor':		'#000',
					'overlayOpacity':	0.5
				});
			});
			// date picker
			resCalendarSetup();
			// preload images
			var cache = [];
			for (i=0;i<preloadArray.length;i++) {
				var cacheImage = document.createElement('img');
				cacheImage.src = preloadArray[i];
				cache.push(cacheImage);
			}
		}
	}
	
// Reservation Calendar functions

	function resCalendarSetup() {
		if(document.getElementById('reservationForm')) {
			$(function() {
				$('.date-pick')
					.datePicker()
					.dpSetPosition($.dpConst.POS_TOP, $.dpConst.POS_RIGHT)
					
				$('#checkin').bind(
					'dpClosed',
					function() {
						toggleFormElements(true);
					}
				);
				$('#checkout').bind(
					'dpClosed',
					function() {
						toggleFormElements(true);
					}
				);
				$('.dp-choose-date').bind(
					'click',
					function() {
						toggleFormElements(false);
					}
				);
				
			});
		}
	}
	
// siFR styling code
		
	var fixChars = function(str) {
		str=str.replace(/“/g,'"') ;
		str=str.replace(/”/g,'"') ;
		str=str.replace(/‘/g,'\'') ;
		str=str.replace(/’/g,'\'') ;
		return str ;
	}
	
	var fixCharsCapitals = function(str) {
		return fixChars(str).toUpperCase();
	}	
	
	var grilledCheese = { src: '/sifr/grilled-cheese.swf'};
	sIFR.useStyleCheck = true;
	sIFR.activate(grilledCheese);

	function sifrStart() {
	
		sIFR.replace(grilledCheese, {
		  selector: '.homepage h1',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: '.sIFR-root { font-size: 28px; leading: -6; color: #4b9932; }'
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '.mainColumn h1',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: 0,
		  tuneHeight: -4,
		  css: '.sIFR-root { font-size: 30px; color: #4b9932; }'
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '.panelWhite .panelContent h2',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: '.sIFR-root { font-size: 20px; leading: -10; color: #4b9932; }'
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '.panel .panelContent h2',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: '.sIFR-root { font-size: 20px; leading: -10; color: #ffffff; }',
		  filters: { DropShadow: { knockout: false, angle: 75 ,distance: 1, blurX: 0, blurY: 0, color: '#000000', strength: 2}}
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '.mainColumn h2',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: '.sIFR-root { font-size: 20px; leading: -10; color: #4b9932; }'
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '#calendarArea h3',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: '.sIFR-root { font-size: 20px; leading: -10; color: #4b9932; }'
		});
		
		sIFR.replace(grilledCheese, {
		  selector: '.mainColumn h3',
		  modifyContentString: fixChars,
		  wmode: 'transparent',
		  offsetTop: -1,
		  tuneHeight: -7,
		  css: {
			'.sIFR-root':{ 'font-size': '16px', 'leading': '-10', 'color': '#4b9932' },
			'a': { 'text-decoration': 'none' },
			'a:link': { 'color': '#A60011' },
			'a:hover': { 'color': '#00CC00','text-decoration': 'underline' }
		  }
		});
	
	}
	
// 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;
	}
	
// 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 toggleFormElements(getMode) {
		if((navigator.userAgent.indexOf("MSIE 5")!=-1 || navigator.userAgent.indexOf("MSIE 6")!=-1) && document.getElementById('reservationForm')) {
			if(getMode) {
				document.getElementById('rooms').style.visibility = "visible";
				document.getElementById('adults').style.visibility = "visible";
				document.getElementById('children').style.visibility = "visible";
			} else {
				document.getElementById('rooms').style.visibility = "hidden";
				document.getElementById('adults').style.visibility = "hidden";
				document.getElementById('children').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 flash/js functions
	
	var flashMenuObject;
	var flashMenu = false; // boolean to show whether we are using the flash menu
	var flashMenuReady = false;
	var flashMenuStarted = false;

	function flashMenuHandshake() { // flash movie has received handshake from javascript
		flashMenu = true;
		flashMenuReady = true;
	}

	function flashMenuInit() { // flash movie has started running
		flashMenu = true;
		flashMenuStarted = true;
		setupFlashMenu();
	}
	
	function setupFlashMenu() {
		// Check whether the browser is IE. If so, flashVideoPlayer is window.videoPlayer. Otherwise, it's document.videoPlayer.
		// The videoPlayer is the ID assigned to the <object> and <embed> tags.
		flashMenuObject = (isIE) ? window['headerFlashMenu'] : document['headerFlashMenu'];
		// Send html handshake to flash
		flashMenuObject.htmlIsReady();
	}

// Menu Stuff
	var dynamicMenuHolder;
	var dynamicMenu;
	var dynamicMenuGap;
	var dynamicMenuGapTile;
	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 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
					if(flashMenu) {
						flashMenuObject.setMenuNormal(storeMenuIndex);
					} else {
						storeThisElement.className = getMenuClass(storeThisElement,false);
					}
				} else {
					doHideMenu();
				}
			}
			if(!menuActive) {
				// get elements
				dynamicMenuHolder = document.getElementById("dynamicMenuHolder");
				dynamicMenu = document.getElementById("dynamicMenu");
				dynamicMenuGap = document.getElementById("dynamicMenuGap");
				dynamicMenuGapTile = document.getElementById("dynamicMenuGapTile");
				dynamicMenuContent = document.getElementById("dynamicMenuContent");
				menuActive = true;
			}
			//activation
			storeMenuIndex = menuIndex;
			if(flashMenu) {
				storeThisElement = "placebo";
			} else {
				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";
				// Set zIndex + make visible
				dynamicMenu.style.zIndex = 1000;
				dynamicMenu.style.display = "block";
				// Set horizontal position
				xOffset = (parseFloat(dynamicMenuHolder.offsetWidth) - parseFloat(dynamicMenu.offsetWidth)) * ((menuIndex+1)/menuTotal) + 5;
				setPos(dynamicMenu,xOffset,150);
				// hide visitDate in ie6
				toggleFormElements(false);
				// gap position
				if(flashMenu) {
					setPos(dynamicMenuGap,(buttonLeft - xOffset) + 35,0);
					dynamicMenuGap.style.width = (buttonWidth - 7) + "px";
					dynamicMenuGapTile.style.width = (buttonWidth - 26) + "px";
				} else {
					setPos(dynamicMenuGap,(buttonLeft - xOffset) + 35,0);
					dynamicMenuGap.style.width = (buttonWidth - 9) + "px";
					dynamicMenuGapTile.style.width = (buttonWidth - 26) + "px";
				}
				// 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 = 340 + "px";
					break;
					case 2:
					document.getElementById("submenu" + menuIndex).style.width = 575 + "px";
					break;
					case 3:
					document.getElementById("submenu" + menuIndex).style.width = 810 + "px";
					break;
				}
				// 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";
				} else {
					// ie6 rendering bug fix
					dynamicMenuContent.style.height = submenuHeight + "px";
				}
				// 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');",200);
					}
				}
				
			} else {
				dynamicMenu.style.display = "none";
			}
	}
}
	
	function hideMenu(getTrigger) {
		if(menuSystemActive) {
			if(getTrigger=="button" && menuFocus=="button") menuTimeout = setTimeout("doHideMenu();",200);
		}
	}
	
	function doHideMenu() {
		if(menuSystemActive && storeThisElement != null) {
			// show visitDate in ie6
			toggleFormElements(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);
			clearTimeout(submenuTimeout);
			menuTimeout = null;
		}
	}
	
	function menuAreaClick(menuIndex,buttonState,buttonLeft,buttonWidth,thisElement) {
		if(menuSystemActive) {
			if(menuActive && storeMenuIndex == menuIndex) {
				// go to first url in submenu
				firstLink = document.getElementById("submenu" + menuIndex).getElementsByTagName("A")[0];
				firstLinkURL = firstLink.href.toString();
				firstLinkTarget = firstLink.target.toString();
				firstLinkTracking = firstLink.getAttribute("onclick").toString();
				// do tracking if required
				if (firstLinkTracking.indexOf("trackLink") > -1) {
					// get tracking code
					var regex = new RegExp(".*trackLink\\('([^']*)'.*");
					trackingCode = regex.exec(firstLinkTracking)[1];
					trackLink(trackingCode);
				}
				// page load
				if(firstLinkTarget == "_blank") {
					window.open(firstLinkURL);
				} else {
					window.location = firstLinkURL;
				}
				// close menu
				doHideMenu();
				return false;
			} else  {
				// show menu
				showMenu(menuIndex,buttonState,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;
	}
	
// 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; break; }
					}
				}
				// loop through, get data, and hide all but chosen tab (first tab is default)
				for(i=0;i<allTabDivs.length;i++) {
					// tab title
					if(document.all) {
						allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].innerText.toString();
					} else {
						allTabTitles[i] = allTabDivs[i].getElementsByTagName("H2")[0].textContent.toString();
					}
					// hide H2
					allTabDivs[i].getElementsByTagName("H2")[0].style.display = "none";
					// hide content?
					if(i == tabOn) {
						allTabDivs[i].className = "tabbedContent contentVisible";
					} else {
						allTabDivs[i].className = "tabbedContent contentHidden";
					}
				}
			}
			// Build tabs
			var myTabs = "<dl id='tabButtons'>";
			for (i=0; i<allTabDivs.length; i++) {
				if (i == tabOn) {
					myTabs += "<dd id='tab" + i + "' class='tab tabOn'>";
				} else {
					myTabs += "<dd id='tab" + i + "' class='tab tabOff'>";
				}
				myTabs += "<a href='javascript:doTab(" + i + ");'><span class='tabLeftEdge'><\/span><span class='tabContent'>" + allTabTitles[i] + "<\/span><\/a><\/dd>";
			}
			myTabs += "</dl>";
			document.getElementById("tabArea").innerHTML += myTabs;
		}
	}
	
	function doTab(getTab) {
		// check tab is different from current active tab
		if(getTab != tabOn) {
			// get elements again for IE
			if(document.getElementsByClassName) {
				allTabDivs = document.getElementsByClassName("tabbedContent");
			} else {
				allTabDivs = getElementsByClass("tabbedContent",document,"div");
			}
			// hide old content and change old tab class
			allTabDivs[tabOn].className = "tabbedContent contentHidden";
			document.getElementById("tab"+tabOn).className = "tab tabOff";
			// show new content and change new tab class
			allTabDivs[getTab].className = "tabbedContent contentVisible";
			document.getElementById("tab"+getTab).className = "tab tabOn";
			// store new tab
			tabOn = getTab;
			// refresh ie vr movie
			if(isIE) {
				if(document.getElementsByClassName) {
					thisFlashVR = allTabDivs[tabOn].getElementsByClassName("miniFlashVrViewer");
				} else {
					thisFlashVR = getElementsByClass("miniFlashVrViewer",allTabDivs[tabOn],"div");
				}
				if(thisFlashVR[0]) {
					thisFlashVR[0].style.display = "block";
				}
			}
			
		}
	}
	
// Calendar seup 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] + "\">";
		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;
	}
	
	function imageDelay() {
		// set timeout
		setTimeout("swapImagePanels();",3000);
	}
	
	function swapImagePanels() {
		if(activePanel=="A") {
			if($) {
  				$(topPanel).fadeOut(2000, function() {
    				// Animation complete.
					setTopPanelDisplay(false);
					buildPanel("A");
  				});
			} else {
				setTopPanelDisplay(false);
				buildPanel("A");
			}
			activePanel = "B";
		} else {
			setTopPanelDisplay(true);
			if($) {
  				$(topPanel).fadeOut(0);
  				$(topPanel).fadeIn(2000, function() {
    				// Animation complete.
					buildPanel("B");
					refreshIeContent();
  				});
			} else {
				buildPanel("B");
			}
			activePanel = "A";
		}
	}
	
	function setTopPanelDisplay(getMode) {
		if(getMode) topPanel.style.display = "block"
		else topPanel.style.display = "none";
	}
	
	function refreshIeContent() {
		// fix for ie cleartype rendering
		if(navigator.appName == 'Microsoft Internet Explorer') topPanel.style.removeAttribute('filter');
	}

// -->