<!--
	/*
		Copyright 2008 Egmont Serieforlaget AS

		Developed by Escio AS - http://www.escio.no/
	*/
	var BrowserDetect = {
		init: function () {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
			this.version = this.searchVersion(navigator.userAgent)
				|| this.searchVersion(navigator.appVersion)
				|| "an unknown version";
			this.OS = this.searchString(this.dataOS) || "an unknown OS";
		},
		searchString: function (data) {
			for (var i=0;i<data.length;i++)	{
				var dataString = data[i].string;
				var dataProp = data[i].prop;
				this.versionSearchString = data[i].versionSearch || data[i].identity;
				if (dataString) {
					if (dataString.indexOf(data[i].subString) != -1)
						return data[i].identity;
				}
				else if (dataProp)
					return data[i].identity;
			}
		},
		searchVersion: function (dataString) {
			var index = dataString.indexOf(this.versionSearchString);
			if (index == -1) return;
			return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
		},
		dataBrowser: [
			{
				string: navigator.userAgent,
				subString: "Chrome",
				identity: "Chrome"
			},
			{ 	string: navigator.userAgent,
				subString: "OmniWeb",
				versionSearch: "OmniWeb/",
				identity: "OmniWeb"
			},
			{
				string: navigator.vendor,
				subString: "Apple",
				identity: "Safari",
				versionSearch: "Version"
			},
			{
				prop: window.opera,
				identity: "Opera"
			},
			{
				string: navigator.vendor,
				subString: "iCab",
				identity: "iCab"
			},
			{
				string: navigator.vendor,
				subString: "KDE",
				identity: "Konqueror"
			},
			{
				string: navigator.userAgent,
				subString: "Firefox",
				identity: "Firefox"
			},
			{
				string: navigator.vendor,
				subString: "Camino",
				identity: "Camino"
			},
			{		// for newer Netscapes (6+)
				string: navigator.userAgent,
				subString: "Netscape",
				identity: "Netscape"
			},
			{
				string: navigator.userAgent,
				subString: "MSIE",
				identity: "Explorer",
				versionSearch: "MSIE"
			},
			{
				string: navigator.userAgent,
				subString: "Gecko",
				identity: "Mozilla",
				versionSearch: "rv"
			},
			{ 		// for older Netscapes (4-)
				string: navigator.userAgent,
				subString: "Mozilla",
				identity: "Netscape",
				versionSearch: "Mozilla"
			}
		],
		dataOS : [
			{
				string: navigator.platform,
				subString: "Win",
				identity: "Windows"
			},
			{
				string: navigator.platform,
				subString: "Mac",
				identity: "Mac"
			},
			{
				string: navigator.userAgent,
				subString: "iPhone",
				identity: "iPhone/iPod"
			},
			{
				string: navigator.platform,
				subString: "Linux",
				identity: "Linux"
			}
		]

	};
	BrowserDetect.init();

	function getPuzzles_response(response) {
		if (response.result) {
			var instance = response.instance;
			var elementPrefix = 'puzzleArchive_'+response.componentId+'_';
			var tableWrapper = 'puzzleArchive_'+response.componentId;

			var currentOffsetStartEl = document.getElementById(elementPrefix + 'offsetStart');
			if (currentOffsetStartEl) {
				currentOffsetStartEl.innerHTML = response.pagingInfo.offsetStart;
			}

			var currentOffsetEndEl = document.getElementById(elementPrefix + 'offsetEnd');
			if (currentOffsetEndEl) {
				currentOffsetEndEl.innerHTML = response.pagingInfo.offsetEnd;
			}

			var next = $(elementPrefix+'next');
			if (next) {
				if (response.pagingInfo.offsetEnd == response.pagingInfo.puzzleCount) {
					next.firstChild.className = 'icon greyArrowSmall';
					next.className = "arrow disabled";

					next.onclick = function(event) {
						return false;
					};
				} else {
					next.firstChild.className = 'icon blueArrowSmall';
					next.className = "arrow";

					next.onclick = function(event) {
						getPuzzles(response.pagingInfo.offsetNext, instance, response.componentId, response.pagingInfo.limit);
						return false;
					};
				}
			}

			var prev = $(elementPrefix+'prev');
			if (prev) {
				if (response.pagingInfo.offsetStart > 1) {
					prev.firstChild.className = 'icon blueArrowSmall';
					prev.className = "arrow";

					prev.onclick = function(event) {
						getPuzzles(response.pagingInfo.offsetPrev, instance, response.componentId, response.pagingInfo.limit);
						return false;
					};
				} else {
					prev.firstChild.className = 'icon greyArrowSmall';
					prev.className = "arrow disabled";

					prev.onclick = function(event) {
						return false;
					};
				}
			}


			if (response.html && response.componentId) {
				var tableWrapper = document.getElementById(tableWrapper);
				if (tableWrapper) {
					tableWrapper.innerHTML = response.html;
					tableWrapper.setStyle({height: 'auto'});
				}
			}
		}
	}


	function getPuzzles(offset, instance, componentId, newPageSize) {
		var postString = '';
		postString += 'puzzleMode=combinedLoader.getPuzzles';
		postString += '&offset=' + offset;
		postString += '&instance=' + instance;
		postString += '&componentId=' + componentId;
		if(newPageSize != 'undefined' && newPageSize > 0) {
			postString += '&limit=' + newPageSize;
		}

		var tableWrapper = $('puzzleArchive_'+componentId);
		if (tableWrapper) {
			var tableHeight = tableWrapper.getHeight();
			var tableMargin = (tableHeight - 66) / 2;
			tableWrapper.setStyle({height: tableHeight+'px'});

			tableWrapper.innerHTML = '<div style="text-align:center; padding-top: '+tableMargin+'px;"><img src="/images/activity-indicator.gif" /></div>';

			var url = document.location.href;
			url = url.replace('#','');
			executeAjax(url, getPuzzles_response, postString);
		}

	}

	/*****************************************************************************************************
	 *
	 * MENU FUNCTIONS
	 *
	 ****************************************************************************************************/
	var _menuTimer = 0;

	function toggleSelected(selectElement, state) {
		clearTimeout(_menuTimer);

		if((state == 'on') && (selectElement == selectedMenuElement)) return;

		if(selectedMenuElement && $('submenu_'+selectedMenuElement)) $('submenu_'+selectedMenuElement).className = 'sub hidden';
		if(selectedMenuElement && (selectedMenuElement != defaultMenuElement) && $('menu_'+selectedMenuElement)) $('menu_'+selectedMenuElement).className = '';

		hideSubMenu(selectedMenuElement);

		if(state == 'on')	selectedMenuElement = selectElement;
		if(state == 'off')	selectedMenuElement = defaultMenuElement;

		if($('submenu_'+selectedMenuElement)) $('submenu_'+selectedMenuElement).className = 'sub';
		if($('menu_'+selectedMenuElement)) $('menu_'+selectedMenuElement).className = 'selected';

		showSubMenu(selectedMenuElement);
	}

	function exitMenu(selectedElement) {
		var submenuHolder	= $('menuHolder_'+selectedElement);
		if(submenuHolder) {
			// Avoid loss of focus
			_menuTimer = setTimeout("toggleSelected("+selectedElement+",'off')", 500);
		} else {
			// Avoid flickering effect
			_menuTimer = setTimeout("toggleSelected("+selectedElement+",'off')", 50);
		}
	}

	function showSubMenu(showElement) {
		var mainmenu		= $('menu_'+showElement);
		var submenu			= $('submenu');
		var submenuHolder	= $('menuHolder_'+showElement);

		if(mainmenu && submenuHolder && submenu) {
			submenu.innerHTML = submenuHolder.innerHTML;

			var parentPosition = mainmenu.positionedOffset();
			var parentParentPosition = mainmenu.up().positionedOffset();

			var startPosition	= (parentPosition['left']-parentParentPosition['left']);
			var elementWidth	= submenu.getWidth();
			var maxWidth		= mainmenu.up().getWidth();

			if((startPosition+elementWidth) > maxWidth) startPosition -= (startPosition+elementWidth-maxWidth);

			submenu.setStyle({
				position		: 'relative',
				left			: startPosition+'px',
				display			: 'block',
				visibility		: 'visible',
				width			: 'auto',
				height			: '30px'
			});

			if(BrowserDetect.browser == 'Explorer') {
				if(BrowserDetect.version < 7) {
					for(var i = 0; i < submenu.children.length; i++) {
						var element = submenu.children[i];
						Element.extend(element);

						element.setStyle({
							position	: 'relative',
							left		: '0px'
						});
					}
				}
			}
		}
	}

	function hideSubMenu() {
		var submenu = $('submenu');
		if(submenu) submenu.style.display = 'none';
	}

	/*****************************************************************************************************
	 *
	 * SLIDE CONTROLS
	 *
	 ****************************************************************************************************/
	function toggleSlideControls(state) {
		var controlsLeft	= $('slideControlsLeft');
		var controlsRight	= $('slideControlsRight');

		if(state == 'on') {
			controlsLeft.setStyle({opacity: 0.70, visibility: 'visible'});
			controlsRight.setStyle({opacity: 0.70, visibility: 'visible'});
		} else {
			controlsLeft.setStyle({visibility: 'hidden'});
			controlsRight.setStyle({visibility: 'hidden'});
		}
	}

	var step			= 238;
	var scrollOffset	= 0;

	var scrollTimer;

	var scrollDirection = 1;
	var scrollLength	= 0;
	var scrollStep		= 20;

	var gContents;

	function doHorizontalScroll() {
		var scrollOffset = Math.ceil((step-scrollLength)/6);
		scrollOffset = (scrollDirection) ? scrollOffset : -scrollOffset;

		gContents.scrollLeft = parseInt(gContents.scrollLeft) + parseInt(scrollOffset);

		scrollLength += Math.abs(scrollOffset);

		if(scrollLength < step) {
			scrollTimer = setTimeout('doHorizontalScroll()', 10);
		} else {
			clearTimeout(scrollTimer);
		}
	}

	function slideLeft() {
		gContents = $('weekPuzzleContainer');

		if((gContents.scrollLeft - step) >= 0) {
			scrollDirection = 0;
			scrollLength = 0;

			scrollTimer = setTimeout('doHorizontalScroll()', 10);
		}
	}

	function slideRight() {
		gContents = $('weekPuzzleContainer');

		if((gContents.scrollLeft + step) < (gContents.scrollWidth - gContents.clientWidth)) {
			scrollDirection = 1;
			scrollLength = 0;

			scrollTimer = setTimeout('doHorizontalScroll()', 10);
		}
	}

	/*****************************************************************************************************
	 *
	 * ROTATING WEEK PRIZES FRONTPAGE
	 *
	 ****************************************************************************************************/

	var _prizeRotationTimer = 0;

	function fadeOutPrize() {
		var prizeContainer = $('prizeContainer');

		if(prizeContainer) {
			var image = prizeContainer.down().down();
			var opacity = image.getStyle('opacity');

			if(opacity > 0) {
				image.setStyle({
					opacity:		(opacity-0.05)
				});

				_prizeRotationTimer = setTimeout("fadeOutPrize()", 15);
			} else {
				rotatePrizes();
			}
		}
	}

	function toggleVisibility(id, openText, closeText) {
			var element = document.getElementById('element'+id);
			var href = document.getElementById('href'+id);

			if(element.style.display != 'block') {
				element.style.display = 'block';
				element.style.height = 'auto';
				href.innerHTML = '<img class="icon blueArrowSmall" src="/images/rd08/gif.gif"/>' + closeText;
			} else {
				element.style.display = 'none';
				element.style.height = '0px';
				href.innerHTML = '<img class="icon blueArrowSmall" src="/images/rd08/gif.gif"/>' + openText;
			}
		}


	function rotatePrizes() {
		var prizeContainer = $('prizeContainer');

		if(prizeContainer) {
			// Reset if out of limits
			if(prizeOffset >= (prizes.length-1)) prizeOffset = -1;

			// Starts at 1 since price 0 is loaded from smarty..
			var nextPrizeId = prizes[++prizeOffset];

			var nextPrize = document.getElementById('prize_' + nextPrizeId);
			if(nextPrize) {
				prizeContainer.innerHTML = nextPrize.innerHTML;

				var image = prizeContainer.down().down();
				image.setStyle({
					opacity:		0
				});

				fadeInPrize();
			}
		}
	}

	function fadeInPrize() {
		var prizeContainer = $('prizeContainer');

		if(prizeContainer) {
			var image = prizeContainer.down().down();
			var opacity = image.getStyle('opacity');

			if(opacity < 1) {
				image.setStyle({
					opacity:		(opacity+0.05)
				});

				_prizeRotationTimer = setTimeout("fadeInPrize()", 15);
			} else {
				_prizeRotationTimer = setTimeout("fadeOutPrize()", 4000);
			}
		}
	}
	
	function startPrizeRotation() {
		_prizeRotationTimer = setTimeout("fadeOutPrize()", 4000);

		return false;
		if(prizes.length > 0) {
			rotationTimer = setInterval('rotatePrizes()' , 5000);
		}
	}
-->