
	var featureList = Array();
	var featureImage;
	var featureTop = 2;
	var featureIndex = 0;
	var featureHold = 5000;
	var featureSwitchLimit = 100;
	var featureSwitchCount = 0;

	var bgList = Array();
	var bgImage;
	var bgTop = 2;
	var bgIndex = 0;
	var bgHold = 10000;
	var bgSwitchLimit = 100;
	var bgSwitchCount = 0;

	var marginSize = 40;


	//bgIndex = 0;

	var contentVisible = true;
	var contentTransition = false;
	var submenuPresent = false;
	var submenuVisible = false;
	
	function debugMessage(msg) {
		if (debug) {
			vElement.SetText("debug", msg);
		}
	}

	function loadFeature() {
		featureImage = new Image();

		featureSwitchCount++;
		if (featureSwitchCount > featureSwitchLimit) {
			return;
		}

		featureIndex = (featureIndex + 1) % featureList.length;

		featureImage.onload = showFeature;
		featureImage.src = "/images/features/" + featureList[featureIndex] + ".jpg";

		//debugMessage("Loading " + featureImage.src);
	}

	function loadBackground() {
		bgImage = new Image();

		bgSwitchCount++;
		if (bgSwitchCount > bgSwitchLimit) {
			return;
		}

		bgIndex = (bgIndex + 1) % bgList.length;

		bgImage.onload = showBackground;
		bgImage.src = "/images/backgrounds/" + bgList[bgIndex] + ".jpg";

		debugMessage("Loading " + bgImage.src);
	}

	function showBackground() {
		var prevDiv;
		var nextDiv;

		debugMessage("Showing " + bgImage.src);

		//confirm("show");

		prevDiv = Core.GetElement("bg" + bgTop);

		bgTop = (bgTop % 2) + 1;

		var nextDivId = "bg" + bgTop;
		nextDiv = Core.GetElement(nextDivId);

		//
		// Make sure next layer is hidden to start.
		//
		// (Both this and the "Hide Previous Layer" statement
		// below are required for IE.) ???
		//
		vElement.SetOpacity(nextDiv, 0);

		nextDiv.style.backgroundImage = "url(" + bgImage.src + ")";

		nextDiv.style.zIndex = 1;
		prevDiv.style.zIndex = 0;

//		vElement.Reveal(nextDiv);
		Effect.Appear(nextDivId, {scope:'bg', queue:'end', duration:2.0, afterFinish:function(){
			setTimeout(loadBackground, bgHold);
		}, afterUpdate:function(obj) {
//			debugMessage(obj.currentFrame);
		}});		
		
		//
		// Hide previous layer.
		//
		Effect.Fade(prevDiv, {scope:'bg', queue:'end', duration:0.1});		
//		setTimeout(loadBackground, bgHold);
		
		Cookie.Create("bg", bgImage.src, 1);

	}
	
	function hideContent1() {		
		if (submenuPresent) {
			Effect.BlindUp("submenu", {scope:'content', queue:'end', afterFinish: function(){
				hideContent2();
			}});
		} else {
			hideContent2();
		}
	}
	
	function hideContent2() {
		Effect.Fade("title", {scope:'content'});
//		Effect.Fade("subtitle", {scope:'content'});
		Effect.Fade("scroller", {scope:'content'});
		Effect.BlindUp("features", {scope:'content'})
		Effect.Fade("side", {scope:'content'});
		Effect.BlindUp("side", {scope:'content'})
		Effect.BlindUp("main", {scope:'content', afterFinish:function(){
			contentVisible = false;
			contentTransition = false;
		}});
	}
	
	function hideContent() {
		if (contentVisible) {
			contentTransition = true;
			hideContent1();
		}
	}
	
	function showContent1() {
		Effect.Appear("title", {scope:'content'});
//		Effect.Appear("subtitle", {scope:'content'});
		Effect.Appear("scroller", {scope:'content'});
		Effect.BlindDown("features", {scope:'content'})			
		Effect.Appear("side", {scope:'content'});
		Effect.BlindDown("side", {scope:'content'})			
		Effect.BlindDown("main", {scope:'content', afterFinish:function(){
			showContent2();
		}});
	}
	
	function showContent2() {
		if (submenuPresent) {
			Effect.BlindDown("submenu", {scope:'content', afterFinish:function(){
				contentVisible = true;
				contentTransition = false;
			}});
		} else {
			contentVisible = true;
			contentTransition = false;
		}
	}
	
	function showContent() {
		if (contentTransition) {		
			setTimeout("showContent()", 100);
		} else if (!contentVisible) {
			contentTransition = true;
			showContent1();
		}
	}
	
	function xhideContent() {
	
		if (contentTransition) {
			setTimeout("hideContent()", 100);
		} 
		else if (!contentVisible) {
			return;
		} 
		else {

			Effect.BlindUp("submenu", {scope:'submenu', queue:'front'});
			Effect.Fade("title", {scope:'content', queue:'parallel'});
//			Effect.Fade("subtitle", {scope:'content', queue:{scope:'1', position:'end'}});
			Effect.Fade("scroller", {scope:'content', queue:'parallel'});

/*
			contentTransition = true;
			
			if (submenuVisible) {
				Effect.BlindUp("submenu", {scope:'submenu', queue:'front', afterFinish: function() {
					submenuVisible = false;
				}});
			}
			Effect.Fade("title", {scope:'content', queue:'end'});
			Effect.Fade("subtitle", {scope:'content', queue});
			Effect.Fade("scroller", {scope:'content'});
			Effect.BlindUp("main", {scope:'content'});
			Effect.BlindUp("features", {scope:'content', afterFinish: function() {
				contentVisible = false;
				contentTransition = false;
			}});

			if (Page == "contact") {
//				Effect.Grow("domokun", {queue:'end'});
			}
*/

		}

	}

	function xshowContent() {

		if (contentTransition) {		
			setTimeout("showContent()", 100);
		} 
		if (contentVisible) {
			return;
		}
		else {
		
			contentTransition = true;
			
				if (Page == "contact") {
	//				Effect.Shrink("domokun");
				}

			Effect.Appear("title", {scope:'content'});
			Effect.Appear("subtitle", {scope:'content'});
			Effect.Appear("scroller", {scope:'content'});
			Effect.BlindDown("main", {scope:'content'});
			Effect.BlindDown("features", {scope:'content',afterFinish: function(){
				if (submenuPresent) {
					Effect.BlindDown("submenu", {scope:'content', afterFinish: function() {
						submenuVisible = true;
						contentVisible = true;
						contentTransition = false;
					}});
				}
				else {
					contentVisible = true;
					contentTransition = false;
				}
			}});

		}
	}

	//
	//
	//
	function showFeature() {
		var prevDiv;
		var nextDiv;

		//debugMessage("Showing " + featureImage.src);

		prevDiv = Core.GetElement("feature" + featureTop);

		featureTop = (featureTop % 2) + 1;

		nextDiv = Core.GetElement("feature" + featureTop);

		nextDiv.style.zIndex = 1;
		prevDiv.style.zIndex = 0;

		vElement.SetOpacity(nextDiv, 0);
		nextDiv.style.backgroundImage = "url(" + featureImage.src + ")";

		vElement.Reveal(nextDiv);

		setTimeout(loadFeature, featureHold);
	}

	//
	//
	//
	function doSize() {
	
		if (Skin == "lo") {
			return;
		}

		var cElem = Core.GetElement("content");
		var mElem = Core.GetElement("main");
		var sElem = Core.GetElement("scroller");

		var cDims  = vElement.Dimensions(cElem);
		var mDims  = vElement.Dimensions(mElem);
		var sDims  = vElement.Dimensions(sElem);
		var vpDims = Core.ViewportDimensions();

		//
		// Border Adjustment
		//
		cDims = new Dimensions(cDims.width - 2, cDims.height - 2);

		var cmDiff = cDims.height - mDims.height;
		var msDiff = mDims.height - sDims.height;

		cmDiff = 180;
		msDiff = 30;

		cDims.height = vpDims.height - marginSize;

		if (cDims.height < vMin) {
			cDims.height = vMin;
		} else if (cDims.height > vMax) {
			cDims.height = vMax;
		}

		mDims.height = cDims.height - cmDiff;
		sDims.height = mDims.height - msDiff;

		vElement.Resize(cElem, cDims);
		vElement.Resize(mElem, mDims);
		vElement.Resize(sElem, sDims);

		Cookie.Create("height", cDims.height, 1);
		
/*
		var date = new Date();
		date.setTime(date.getTime() + 6000);
		document.cookie = 'height=' + cDims.height + '; expires=' + date.toGMTString() + '; path=/';
*/
	}

//			Core.AddLoadStatement(doSize());

	//
	//
	//
	function handleLoad() {
		doSize();

		setTimeout(loadFeature, 0);

		if (Page == "test" || Page == "home") {
			setTimeout(loadBackground, bgHold);
		} else if (BgRotate) {
			setTimeout(loadBackground, bgHold);
		}

//		var elem = Core.GetElement("main");
//		var testvi = Core.GetElement("testvi");
//				alert(vElement.WindowOffset(elem));
//				vElement.MoveTo(testvi, vElement.WindowOffset(elem));

		if (vElement.Text("submenu").trim()) {
			submenuPresent = true;
			submenuVisible = true;
		}

		/*		
		initScrollbar();


		// Initialization code. 
		// If you use your own event management code, change it as required.
		//
		if (window.addEventListener) {
			// DOMMouseScroll is for mozilla.
			window.addEventListener('DOMMouseScroll', handleWheel, false);
		}
		///
		window.onmousewheel = document.onmousewheel = handleWheel;
		*/
	}

	var Slider;
	
	function doScrollbar() {


	}

	// scroll the element vertically based on its width and the slider maximum value
	function scrollVertical(value, element, slider) {
		element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
	}


	function sizeScrollbar() {

		var scrollerDims  = vElement.Dimensions("scroller");
		var scrollbarDims  = vElement.Dimensions("scrollbar");
		var scrollableDims = vElement.Dimensions("scrollable");
		var scrollcontrolDims  = vElement.Dimensions("scrollcontrol");
		
		var scrollHeight = Math.floor(scrollerDims.height * scrollbarDims.height / scrollableDims.height);
		
		scrollcontrolDims.height = scrollHeight;
		
		vElement.Resize("scrollcontrol", scrollcontrolDims);
	}
	
	function initScrollbar() {

		sizeScrollbar();
		
		// vertical slider control
		Slider = new Control.Slider('scrollcontrol', 'scrollbar', {
			axis: 'vertical',
			onSlide:  function(v) { scrollVertical(v, $('scroller'), Slider);  },
			onChange: function(v) { scrollVertical(v, $('scroller'), Slider); }
		});

/*
		//what is the effective scroll distance once the scoller's height has been taken into account
		scroller.scrollDist = Math.round(scroller.scrollAreaH-scroller.scrollH);

		//make the scroller div draggable
		Drag.init(Core.GetElement("scrollcontrol"), null, 0, 0, -1, scroller.scrollDist);

		//add ondrag function
		Core.GetElement("scrollcontrol").onDrag = function (x,y) {
		  var scrollY = parseInt(Core.GetElement("scrollcontrol").style.top);
		  var docY = 0 - (scrollY * (scroller.docH - scroller.contH) / scroller.scrollDist);
		  document.getElementById("content").style.top = docY + "px";
		}
*/

	}
	

	function handleDelta(delta) {
//		$("debug").innerHTML = delta;
		scrollVertical(-delta, $("scroller"), Slider);
		if (delta < 0) {
		} else {
		}
	}

	/** Event handler for mouse wheel event.
	 */
	/*

		Ranges:
		
		Safari 2 (Wheel): -12 to -3000 (-13,000)
		IE 7 (Touchpad,Wheel): -120 (-240)
		IE 6 (Touchpad,Wheel): -120 (-240)
		Firefox 1.5 (Touchpad,Wheel:Win): 5 (5)
		Firefox 2 (Wheel:Mac): 1 to 6 (73)
		Opera 9 (Touchpad,Wheel:Win): 200 (200)
		Opera 8.5 (Wheel:Mac): nothing
		Opera 9 (Wheel:Mac): 40 to 600 (1000)

	*/
	function handleWheel(event){
		var delta = 0;

		/* For IE. */
		if (!event) {
			event = window.event;
		}
		
		var msg = '';
		for (var i in event) {
			var val = event[i];
			if (val) {
				msg += val + ', ';
			}
		}
		$("debug").innerHTML = msg;

		/* IE/Opera/Safari. */
		if (event.wheelDelta) { 

			/** In Opera 9, delta differs in sign as compared to IE.
			 */
			if (window.opera) {
				delta = -event.wheelDelta/120;
			}
//			else if (navigator.vendor.match(/Apple/)) {
//				delta = event.wheelDelta/12;
//			}
			else {
				delta = event.wheelDelta/120;
			}

			delta = event.wheelDelta;

		} 
		/** Mozilla case. */
		else if (event.detail) { 

			/** In Mozilla, sign of delta is different than in IE.
			 * Also, delta is multiple of 3.
			 */
//			delta = -event.detail/3;
			delta = -event.detail/5;

			delta = event.detail;
		}

		/** If delta is nonzero, handle it.
		 * Basically, delta is now positive if wheel was scrolled up,
		 * and negative, if wheel was scrolled down.
		 */
		if (delta) {
			handleDelta(delta);
		}
		
		/** Prevent default actions caused by mouse wheel.
		 * That might be ugly, but we handle scrolls somehow
		 * anyway, so don't bother here..
		 */
		if (event.preventDefault) {
			event.preventDefault();
		}

		event.returnValue = false;
	}


	function handleResize() {
		doSize();
		initScrollbar();
	}

