///<reference path="init.js"/>
//------------------------------------------------------------------
//## PAGE
//------------------------------------------------------------------

PAGE.Init = function() {
	this.PageID = '';
	this.PageName = document.getElementsByTagName('H1')[0].innerHTML.ToString();
	this.ContentDiv = $('content');
	this.TextSize = (COOKIE.Read('HHHR-TextSize') == 'big') ? 'big' : 'default';
	this.RenderMode = (COOKIE.Read('HHHR-PageRender') == 'static') ? 'static' : 'dynamic';
	this.ListenToPage = $('listen-to-page');
	this.LayoutMode = ($('financial-table')) ? 'table' : 'column';
	this.LayoutMode = ($('specialsida')) ? 'special' : this.LayoutMode;
	this.Tools = $('tools');
	this.Itterator = 0;
	this.FlashArea = DOM.GetByClassName(document, 'DIV', 'flash-container');

	if (PAGE.Tools) {

		PAGE.Tools.innerHTML = '';

		VISITEDPAGESHANDLER.InitializeVisitedLinks();

		if (PAGE.RenderMode == 'dynamic') {
			//## BUTTON FOR CHANGING TEXT SIZE
			var li = DOM.Create('LI');
			var a = DOM.Create('A', '', 'btn-textsize');
			DOM.SetAttribute(a, 'HREF', 'javascript:;');
			if (PAGE.TextSize == 'big') {
				DOM.SetAttribute(a, 'TITLE', TEXTHANDLER.TextSizeStandardTitle);
				a.innerHTML = '<span>' + TEXTHANDLER.TextSizeStandard + '</span>';
			} else {
				DOM.SetAttribute(a, 'TITLE', TEXTHANDLER.TextSizeBigTitle);
				a.innerHTML = '<span>' + TEXTHANDLER.TextSizeBig + '</span>';
			}
			DOM.Add(a, li);
			EVENT.Add(a, 'click', PAGE.ChangeTextSize);
			DOM.Add(li, PAGE.Tools);
		}

		//## BUTTON FOR CHANGING RENDERMODE
		var li = DOM.Create('LI', 'last');
		var a = DOM.Create('A', '', 'btn-pagerender');
		DOM.SetAttribute(a, 'HREF', 'javascript:;');
		if (PAGE.RenderMode == 'static') {
			DOM.SetAttribute(a, 'TITLE', TEXTHANDLER.RenderColumnLayoutTitle);
			a.innerHTML = '<span>' + TEXTHANDLER.RenderColumnLayout + '</span>';
		} else {
			DOM.SetAttribute(a, 'TITLE', TEXTHANDLER.RenderBasicLayoutTitle);
			a.innerHTML = '<span>' + TEXTHANDLER.RenderBasicLayout + '</span>';
		}
		DOM.Add(a, li);
		EVENT.Add(a, 'click', PAGE.ChangeRenderMode);
		DOM.Add(li, PAGE.Tools);

		if (PAGE.RenderMode == 'dynamic') {
			//## ADD LISTEN-TO-PAGE
			//var li = DOM.Create('LI');
			//var a = DOM.Create('A', '', 'btn-listen');
			//DOM.SetAttribute(a, 'HREF', 'javascript:;');
			//var span = DOM.Create('SPAN');
			//span.innerHTML = TEXTHANDLER.ListenToPage;
			//EVENT.Add(a, 'click', PAGE.Listen);
			//DOM.Add(span, a);
			//DOM.Add(a, li);
			//DOM.Add(li, PAGE.Tools);
		}

		if (PAGE.RenderMode == 'dynamic') {
			//## ADD SEARCHFORM
			var searchForm = DOM.Create('FORM', '', 'searchform');
			DOM.SetAttribute(searchForm, 'action', '/');
			DOM.SetAttribute(searchForm, 'method', 'post');
			var searchWrapper = DOM.Create('DIV');
			var searchSpan1 = DOM.Create('SPAN', 'text');
			var searchSpan2 = DOM.Create('SPAN');
			var searchField = DOM.Create('INPUT', '', 'tbSearchBox');
			DOM.SetAttribute(searchField, 'type', 'text');
			DOM.SetAttribute(searchField, 'value', TRANSLATE.GetValue('BtnSearch'));
			DOM.Add(searchField, searchSpan2);
			DOM.Add(searchSpan2, searchSpan1);
			DOM.Add(searchSpan1, searchWrapper);
			var searchBtn = DOM.Create('INPUT', '', 'btnSearch');
			DOM.SetAttribute(searchBtn, 'type', 'image');
			DOM.SetAttribute(searchBtn, 'src', '../../gfx/btn-search.png');
			DOM.Add(searchBtn, searchWrapper);
			DOM.Add(searchWrapper, searchForm);
			DOM.AddFirst(searchForm, $('topbar'));
		}

	}
	if (PAGE.RenderMode == 'dynamic') {
		tmpClassName = 'dynamic';
		if (document.addEventListener) {
			tmpClassName = 'dynamic nonIE';
		}
		document.getElementsByTagName('html')[0].className = tmpClassName;
		document.getElementsByTagName('body')[0].className = tmpClassName;
		document.getElementsByTagName('html')[0].style.overflowY = 'hidden';
	}

	if (PAGE.FlashArea.length > 0) {
		if (PAGE.RenderMode == 'dynamic') {
			PAGE.InitFlash();
		}
	}

	if ($('notes') && PAGE.RenderMode == 'dynamic') {
		if ($('financial-table')) $('financial-table').style.width = '960px'
		$('content').style.width = '960px'
		document.getElementsByTagName('H1')[0].style.width = '450px';
	}

	var pos = location.href.toString().indexOf('#');
	if (pos > 0) {
		var anc = location.href.substring(pos + 1);
		if (anc.length > 2) {
			$('tbSearchBox').value = anc;
			anc = unescape(anc).replace(/ +/gi, '(\\s+|\\s*<[^>]*>\\s*)');
			var re = new RegExp(">([^<]*)?(" + anc + ")([^>]*)?<", "ig");
			$('content').innerHTML = $('content').innerHTML.replace(re, ">$1<span class=\"highlight\">$2</span>$3<");
		}
	}

	//## FLOATING HEADER
	var floatingHeader = DOM.GetByClassName($('content'), 'H3', 'floatingheader')[0];
	if (floatingHeader) {
		var h1 = document.getElementsByTagName('H1')[0];
		h1.innerHTML = h1.innerHTML + '<br />';
		var newFloatingWrapper = DOM.Create('span', 'floating-header');
		newFloatingWrapper.innerHTML = floatingHeader.innerHTML;
		DOM.Add(newFloatingWrapper, h1);
		DOM.Remove(floatingHeader);
	}

};
PAGE.StartReport = function() {

};
PAGE.CheckForOversize = function() {
	if (PAGE.RenderMode == 'static') return;
	if (parseInt($('content').offsetHeight + $('content').offsetTop) > getViewport.Height()) {
		document.getElementsByTagName('html')[0].style.overflowY = 'scroll';
	}
	if ($('resultPanel')) {
		$('resultPanel').style.left = $('searchform').offsetLeft + 'px';
	}
	var isSingleFlash = (DOM.GetByClassName(document, 'div', 'singleflash')[0]) ? true : false;
	if (isSingleFlash) {
		var newFlashHeight = parseInt(getViewport.Height() - 150);
		if (PAGE.RenderMode == 'static') {
			newFlashHeight = 320;
		}
		if (newFlashHeight > 545) newFlashHeight = 545;
		var newFlashWidth = parseInt(newFlashHeight * 1.7557);
		var flashObject = PAGE.FlashArea[0].getElementsByTagName('OBJECT')[0];
		var flashEmbed = PAGE.FlashArea[0].getElementsByTagName('EMBED')[0];
		if (flashObject) {
			DOM.SetAttribute(flashObject, 'height', newFlashHeight);
			DOM.SetAttribute(flashObject, 'width', newFlashWidth);
		}
		if (flashEmbed) {
			DOM.SetAttribute(flashEmbed, 'height', newFlashHeight);
			DOM.SetAttribute(flashEmbed, 'width', newFlashWidth);
		}
	}
};
PAGE.InitFlash = function() {
	for (var i = 0, n = PAGE.FlashArea.length; i < n; i++) {
		var flashArea = PAGE.FlashArea[i];
		var flashSource = flashArea.id.toString();
		var path = '../../gfx/flash/';
		var flashHeight = '100%';
		var flashWidth = '100%';
		var flashScale = 'exactfit';
		var flashWmode = '';

		var newFlashWidth = parseInt(getViewport.Width() + 5);
		var newFlashHeight = parseInt(newFlashWidth / 2.15);

		if ($('specialsida').className == 'about') {
			flashWidth = '608'
			flashHeight = '330';
			flashScale = 'borders';
			flashWmode = 'transparent';
		}

		flashSource = path + flashSource;
		var flashInput = '';
		flashInput += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"';
		if (flashWidth) flashInput += ' width="' + flashWidth + '"';
		if (flashHeight) flashInput += ' height="' + flashHeight + '"';
		flashInput += ' align="middle">';
		flashInput += '	<param name="movie" value="' + flashSource + '"/>';
		flashInput += '	<param name="quality" value="high"/>';
		flashInput += '	<param name="scale" value="' + flashScale + '">';
		flashInput += '	<param name="allowscriptaccess" value="always">'
		flashInput += '	<param name="wmode" value="' + flashWmode + '"/>';
		flashInput += '	<embed scale="' + flashScale + '" wmode="' + flashWmode + '" allowscriptaccess="always" src="' + flashSource + '" pluginspace="http://www.adobe.com/go/getflashplayer"';
		flashInput += ' width="' + flashWidth + '"';
		flashInput += ' height="' + flashHeight + '"';
		flashInput += ' type="application/x-shockwave-flash" quality="high"/>';
		flashInput += '</object>';
		flashArea.innerHTML = flashInput;
	}
}
PAGE.HideFlashArea = function() {
	for (var i = 0, n = PAGE.FlashArea.length; i < n; i++) {
		var flashArea = PAGE.FlashArea[i];
		flashArea.style.visibility = 'hidden';
	}
};
PAGE.ShowFlashArea = function() {
	for (var i = 0, n = PAGE.FlashArea.length; i < n; i++) {
		var flashArea = PAGE.FlashArea[i];
		flashArea.style.visibility = 'visible';
	}
};
PAGE.ChangeTextSize = function(e) {
	var target = $('btn-textsize');
	if (PAGE.TextSize == 'big') {
		PAGE.TextSize = 'default';
		COOKIE.Create('HHHR-TextSize', 'default', '365');
		DOM.SetAttribute(target, 'TITLE', TEXTHANDLER.TextSizeBigTitle);
		target.innerHTML = '<span>' + TEXTHANDLER.TextSizeBig + '</span>';
	} else {
		PAGE.TextSize = 'big';
		COOKIE.Create('HHHR-TextSize', 'big', '365');
		DOM.SetAttribute(target, 'TITLE', TEXTHANDLER.TextSizeStandardTitle);
		target.innerHTML = '<span>' + TEXTHANDLER.TextSizeStandard + '</span>';
	}
	if (PAGE.RenderMode == 'static') {
		document.location.reload();
	} else {
		if (PAGE.LayoutMode == 'special') {
			document.location.reload();
		} else {
			LAYOUT.ForceReset();
		}
	};
};
PAGE.ChangeRenderMode=function(){
	if(PAGE.RenderMode=='dynamic'){
		PAGE.RenderMode='static';
		COOKIE.Create('HHHR-PageRender','static','365');
	}else{
		PAGE.RenderMode='dynamic';
		COOKIE.Create('HHHR-PageRender','dynamic','365');
	}
	document.location.reload();
};
PAGE.Listen = function(e) {

	return;

	if (!e) e = window.event;
	CancelEvent(e);
	var pageURL = document.location.toString();
	encodedURL = escape(pageURL);
	var doubleencodedURL = escape(encodedURL);
	var mp3FileName = document.getElementsByTagName('TITLE')[0].innerHTML.toString() + '_' + document.getElementsByTagName('H1')[0].innerHTML.toString();
	mp3FileName = mp3FileName.WebSafe();
	var pathToFlashPlayer = '';
	if ($('readspeaker')) DOM.Remove($('readspeaker'));
	var divReadSpeaker = DOM.Create('div', '', 'readspeaker');

	var readspeakerLang = 'sv_se';
	if (TRANSLATE.Lang == 'en') {
		readspeakerLang = 'en_us';
	}

	divReadSpeaker.innerHTML =
		'<object classid=\'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\' codebase=\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\' height=\'25\' width=\'175\'>'
		+ '	<param name=\'movie\' value="' + pathToFlashPlayer + 'mp3player.swf?url=http%3A%2F%2Fapp.readspeaker.com%2Fcgi-bin%2Frsent%3Fcustomerid%3D4527%26lang%3D' + readspeakerLang + '%26url%3D' + doubleencodedURL + '">'
		+ '	<param name=\'quality\' value=\'high\'><param name=\'SCALE\' value=\'exactfit\'>'
		+ '	<param name=\'wmode\' value=\'transparent\'>'
		+ '	<embed wmode=\'transparent\' src="' + pathToFlashPlayer + 'mp3player.swf?url=http%3A%2F%2Fapp.readspeaker.com%2Fcgi-bin%2Frsent%3Fcustomerid%3D4527%26lang%3D' + readspeakerLang + '%26url%3D' + doubleencodedURL + '" quality=\'high\' pluginspage=\'http://www.macromedia.com/go/getflashplayer\' type=\'application/x-shockwave-flash\' scale=\'exactfit\' height=\'25\' width=\'175\'>'
		+ '	</embed>'
		+ '</object>'
		+ '<a href="http://app.readspeaker.com/cgi-bin/rsent?customerid=4527&lang=' + readspeakerLang + '&audiofilename=' + mp3FileName + 'save=1&url=' + encodedURL + '">Spara som MP3</a>';
	DOM.Add(divReadSpeaker, document.getElementsByTagName('body')[0]);
};

PAGE.GetPageHash=function(){
    var url = document.location.pathname.toString();
    var posSlash = url.lastIndexOf("/");
    var posDot = url.lastIndexOf(".");
    url = url.substring(posSlash,posDot);
    return url;
};


/* MISC FUNCTIONALITY
----------------------------------------------------*/
FUNCTIONS.Division_iPOP = function() {
};
FUNCTIONS.Division_MouseOver = function() {
	this.className = 'division hover';
};
FUNCTIONS.Division_MouseOut = function() {
	this.className = 'division';
};
FUNCTIONS.GraphBox_MouseOver = function() {
	this.style.backgroundImage = 'url(../../gfx/bg-graphbox-hover.png)';
};
FUNCTIONS.GraphBox_MouseOut = function() {
	this.style.backgroundImage = '';
};

FUNCTIONS.Divisione_Init = function() {
	var puffs = DOM.GetByClassName($('specialsida'), 'div', 'puff');
	for (var i = 0, n = puffs.length; i < n; i++) {
		var link = puffs[i].getElementsByTagName('A')[0];
		EVENT.Add(link, 'mouseover', FUNCTIONS.Divisione_ToggleImage);
		EVENT.Add(link, 'mouseout', FUNCTIONS.Divisione_ToggleImage);
	}
};
FUNCTIONS.Divisione_ToggleImage = function() {
	var image = this.getElementsByTagName('IMG')[0];
	if (image) {
		var imageSrc = image.src.toString().substring(image.src.toString().lastIndexOf('/') + 1).replace('.png', '');
		if (imageSrc.indexOf('-red') != -1) {
			Console.Info(imageSrc,1);
			image.src = '../../images/' + imageSrc.replace('-red','') + '.png';
		} else {
			Console.Info(imageSrc,2);
			image.src = '../../images/' + imageSrc + '-red.png';
		}
	}
}

/* iPOP - INTERNALPOPUPS
----------------------------------------------------*/
iPOP.Init = function() {
	if (PAGE.RenderMode == 'static') return;
	this.iPop = null;
	this.extraWidth = 125;
	this.extraHeight = 0;
	this.Left = 0;
	this.Top = 110;
	this.Height = 0;
	this.isFlash = false;
	this.Topic = '';
	var internalLinks = DOM.GetByAttribute($('content'), 'A', 'rel', 'inline');
	for (var i = 0, n = internalLinks.length, link = null; i < n; i++) {
		link = internalLinks[i];
		EVENT.Add(link, 'click', iPOP.Open);
	}

	//## EXTERNAL LINKS
	var externalLinks = $('content').getElementsByTagName('A');
	for (var i = 0, n = externalLinks.length; i < n; i++) {
		var link = externalLinks[i];
		var url = DOM.GetAttribute(link, 'href');
		if (url && url.toLowerCase().indexOf('javascript:;') != -1 && url.toLowerCase().indexOf('../') == -1) {
			if (url.indexOf(document.domain.toString()) == -1) {
				DOM.SetAttribute(externalLinks[i], 'target', '_blank');
			}
		}
	}

};
iPOP.Open = function(e) {
	iPOP.Test = this;
	if (PAGE.RenderMode == 'static') return;
	PAGE.HideFlashArea();
	iPOP.Build(e);
	CancelEvent(e);
};
iPOP.Close=function(){
	PAGE.ShowFlashArea();
	var iPop=$('ipopper');
	if(iPop){
		DOM.Remove(iPop);
		iPopAnimation.Close();
	}
};
iPOP.AddTextContent = function(url, e) {
	if (!url) return;
	url = url.toString().toLowerCase();
	if (url.indexOf('#bm_') != -1) {
		url = '../_popups/' + url.substring(url.indexOf('#bm_') + 1) + '.html?cache=' + Math.random();
	} else {
		var fileName = url.substring(url.lastIndexOf('/'));
		fileName = fileName.replace('/', '');
		url = '../_popups/' + fileName + '?cache=' + Math.random();
	}
	var longUrl = 'http://' + document.domain;
	if (typeof XMLHttpRequest == 'undefined') {
		function XMLHttpRequest() {
			try { return new ActiveXObject("MSXML3.XMLHTTP") } catch (e) { }
			try { return new ActiveXObject("MSXML2.XMLHTTP.3.0") } catch (e) { }
			try { return new ActiveXObject("MSXML2.XMLHTTP.4.0") } catch (e) { }
			try { return new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { }
			try { return new ActiveXObject("Microsoft.XMLHTTP") } catch (e) { }
			return null;
		};
	}
	var responseXml = null;
	httpRequest = new XMLHttpRequest();
	if (httpRequest.overrideMimeType) httpRequest.overrideMimeType('text/xml');
	httpRequest.open('GET', url, true);
	httpRequest.send(null);
	httpRequest.onreadystatechange = function() {
		var thisFunction = arguments.callee;
		if (!thisFunction.loopCount) thisFunction.loopCount = 0;
		thisFunction.loopCount++;
		if (thisFunction.loopCount > 10) {
			oTopic.innerHTML = '404';
			oContent.innerHTML = '';
			return;
		}
		if (httpRequest.readyState == 4) {
			if (httpRequest.status == 200) {
				if (httpRequest.responseXML == null) return;
				responseXml = httpRequest.responseXML.documentElement;
				if (!responseXml) {
					var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
					xmlDoc.async = false;
					xmlDoc.loadXML(httpRequest.responseText);
					if (xmlDoc.documentElement !== null) {
						responseXml = xmlDoc.documentElement;
					}
				}
				if (responseXml) {
					var strTopic = '', strText = '', oContent;
					strTopic = responseXml.getElementsByTagName('title')[0].firstChild.nodeValue;
					oContent = responseXml.getElementsByTagName('content')[0]; //.getElementsByTagName('p');
					strText = oContent.xml;
					iPOP.Topic = strTopic;
					if (typeof strText == 'undefined') {
						strText = new XMLSerializer().serializeToString(oContent);
					}
					$('pop-topic').getElementsByTagName('A')[0].innerHTML = strTopic;
					$('pop-content').innerHTML = strText;
				}
			} else if (httpRequest.status == 404) {
				var ErrorUrl = longUrl + url.replace('..', '');
				$('pop-topic').getElementsByTagName('A')[0].innerHTML = '404 Page Not Found!';
				$('pop-content').innerHTML = '<p>The requested file was not found on this server.<br /><code>' + ErrorUrl + '</code></p>';
			}
		}
	};
};
iPOP.Build = function(e) {
	if (PAGE.RenderMode == 'static') return;
	var Event = e;
	var Trigger = (e.srcElement) ? e.srcElement : e.target;
	var Parent = Trigger.parentNode;
	iPOP.isFlash = false;
	iPOP.Top = 110;
	var currContentWidth = parseInt(LAYOUT.ContentDiv.style.width);
	if (PAGE.LayoutMode != 'table') {
		while (Parent.parentNode && Parent.parentNode.className !== 'column') {
			Parent = Parent.parentNode;
		}
		Parent = Parent.parentNode;
	}
	if ((Trigger.tagName.toLowerCase() == 'span' && Trigger.className == 'zoom') || Trigger.tagName.toLowerCase() == 'img' || Trigger.tagName.toLowerCase() == 'strong') {
		Trigger = Trigger.parentNode;
	}
	if (iPOP.Test && iPOP.Test.tagName.toLowerCase() == 'div' && iPOP.Test.className == 'wrapper') {
		Trigger = iPOP.Test;
	}
	iPOP.TriggerX = e.clientX;
	iPOP.TriggerY = e.clientY;

	if (PAGE.LayoutMode == 'table') {
		var ScrollPanel = $('tablescrollpanel');
		var wrapperLeft = $('tablescrollpanel').scrollLeft;
		iPOP.extraHeight = 42;
		iPOP.Width = 532;
		iPOP.Top = 80;
		if (Parent.tagName == 'TD') {
			iPOP.Left = 450;
		} else {
			iPOP.Left = -10;
		}
	} else if (PAGE.LayoutMode == 'special') {
		var ScrollPanel = $('content');
	
	} else {
		var ScrollPanel = null;
		if ($('scrollpanel')) {
			ScrollPanel = $('scrollpanel');
		} else {
			ScrollPanel = $('content');
		}
		var wrapperLeft = ScrollPanel.scrollLeft;
		var parentLeft = parseInt(Parent.offsetLeft - wrapperLeft);
		if (Parent.nextSibling) {
			iPOP.Left = (parentLeft > 600) ? parseInt(Parent.previousSibling.offsetLeft - wrapperLeft) - 65 : parseInt(Parent.nextSibling.offsetLeft - wrapperLeft) - 20;
		}
		iPOP.Width = Parent.clientWidth + iPOP.extraWidth;
	}
	var topicLink = DOM.GetAttribute(Trigger, 'href');
	if (topicLink) {
		if (topicLink.toLowerCase().indexOf('flash') != -1) {
			iPOP.isFlash = true;
		}
	}
	if (Trigger.parentNode.parentNode.className.indexOf('illustration') != -1) {
		var ImageSrc = DOM.GetAttribute(Trigger, 'href');
		var bigImage = new Image();
		bigImage.src = ImageSrc.toString();
		bigImage.width = 600;
		iPOP.Width = 720;
		if ((iPOP.Left + iPOP.Width) > currContentWidth) {
			iPOP.Left = 0;
		}
	} else if ((Trigger.parentNode.parentNode.className.indexOf('additional') != -1) && (Trigger.parentNode.parentNode.className.indexOf('graph-box') != -1)) {
		if (PAGE.LayoutMode == 'special') {
			iPOP.Width = 668;
		} else {
			var tableWrapper = Trigger.parentNode.parentNode.getElementsByTagName('DIV')[1];
			tableWrapper.style.display = 'block';
			iPOP.Width = tableWrapper.getElementsByTagName('TABLE')[0].offsetWidth + 150;
			tableWrapper.style.display = 'none';
		}
		if ((iPOP.Left + iPOP.Width) > currContentWidth) {
			iPOP.Left = -10;
		}
		if (DOM.GetByClassName(Trigger.parentNode, 'table', 'double')[0]) {
			iPOP.Width = 970;
			iPOP.Left = 0;
		}
	} else if ((Trigger.parentNode.parentNode.parentNode.className.indexOf('additional') != -1) && (Trigger.parentNode.parentNode.parentNode.className.indexOf('graph-box') != -1)) {
		var tableWrapper = Trigger.parentNode.parentNode.parentNode.getElementsByTagName('DIV')[1];
		tableWrapper.style.display = 'block';
		this.Width = tableWrapper.getElementsByTagName('TABLE')[0].offsetWidth + 100;
		tableWrapper.style.display = 'none';
	} else if (Trigger.className == 'wrapper' && Trigger.parentNode.className.indexOf('factbox') != -1) {
		// Continue!
	} else {
		if (!topicLink) topicLink = Trigger.a;
		if (!topicLink) return;
	}
	if (iPOP.isFlash) {
		this.Width = 600;
		this.Left = 0;
	}

	if (iPOP.Height == 0) {
		iPOP.Height = parseInt($('content').offsetHeight);
	}

	if (PAGE.LayoutMode == 'table') {
		if (iPOP.Height > (getViewport.Height()-110)) {
			iPOP.Height = getViewport.Height() - 110;
		}
	}


	if (PAGE.LayoutMode == 'special') {
		if (iPOP.Height > getViewport.Height()) {
			iPOP.Height = getViewport.Height() - 110;
		}
		if (document.documentElement.scrollTop && document.documentElement.scrollTop > 0) {
			iPOP.Top = document.documentElement.scrollTop;
		}
	}

	iPOP.iPop = $('ipopper');
	if (iPOP.iPop) DOM.Remove(iPOP.iPop);
	iPOP.iPop = document.createElement('DIV');
	iPOP.iPop.id = 'ipopper';
	iPOP.iPop.style.top = iPOP.Top + 'px';
	iPOP.iPop.style.left = iPOP.Left + 'px';
	iPOP.iPop.style.width = iPOP.Width + 'px';
	iPOP.iPop.style.height = iPOP.Height + 'px';
	DOM.Add(DOM.Create('DIV', 'pop-corner-tr'), iPOP.iPop);
	DOM.Add(DOM.Create('DIV', 'pop-corner-br'), iPOP.iPop);
	DOM.Add(DOM.Create('DIV', 'pop-corner-bl'), iPOP.iPop);
	DOM.Add(DOM.Create('DIV', 'pop-corner-tl'), iPOP.iPop);
	var shade = DOM.Create('DIV', 'pop-top');
	shade.style.width = parseInt(iPOP.Width - 96) + 'px';
	DOM.Add(shade, iPOP.iPop);
	var main = DOM.Create('DIV', 'pop-main');
	main.style.width = parseInt(iPOP.Width - 96) + 'px';
	main.style.height = parseInt(iPOP.Height - 96) + 'px';
	DOM.Add(main, iPOP.iPop);
	var shade = DOM.Create('DIV', 'pop-bottom');
	shade.style.width = parseInt(iPOP.Width - 96) + 'px';
	DOM.Add(shade, iPOP.iPop);
	var shade = DOM.Create('DIV', 'pop-right');
	shade.style.height = parseInt(iPOP.Height - 96) + 'px';
	DOM.Add(shade, iPOP.iPop);
	var shade = DOM.Create('DIV', 'pop-left');
	shade.style.height = parseInt(iPOP.Height - 96) + 'px';
	DOM.Add(shade, iPOP.iPop);
	var close = DOM.Create('DIV', 'pop-close');
	close.title = 'Close';
	close.innerHTML = '<span>' + TEXTHANDLER.Close + '</span>';
	EVENT.Add(close, 'click', iPOP.Close);
	DOM.Add(close, iPOP.iPop);
	var popTopic = DOM.Create('H2', '', 'pop-topic');
	var popLink = DOM.Create('A');
	DOM.SetAttribute(popLink, 'HREF', topicLink);
	DOM.Add(popLink, popTopic);
	DOM.Add(popTopic, iPOP.iPop);
	var popContent = DOM.Create('DIV', '', 'pop-content');
	popContent.style.width = iPOP.Width - 75 + 'px';
	popContent.style.height = iPOP.Height - 120 + 'px';
	DOM.Add(popContent, iPOP.iPop);

	iPOP.iPop.style.visibility = 'hidden';
	DOM.Add(iPOP.iPop, document.getElementsByTagName('BODY')[0]);

	//## INPUT CONTENT
	if (Trigger.parentNode.parentNode.className.indexOf('illustration') != -1 && !iPOP.isFlash) {
		CancelEvent(e);
		if (bigImage) {
			$('pop-content').appendChild(bigImage);
			bigImage.style.width = '600px';
			bigImage.style.height = 'auto';
			if (Trigger.getElementsByTagName('STRONG')[0]) {
				iPOP.Topic = Trigger.getElementsByTagName('STRONG')[0].innerHTML;
				$('pop-topic').getElementsByTagName('A')[0].innerHTML = iPOP.Topic;
			}
			DOM.SetAttribute($('pop-topic').getElementsByTagName('A')[0], 'TARGET', '_blank');
			if (bigImage.src.toString().indexOf('/diagrams/') != -1) {
				var linkBox = DOM.Create('DIV', 'diagram-linkbox');
				var linkBoxList = DOM.Create('UL');
				var linkToEmf = ImageSrc.toLowerCase().replace('/fullsize/', '/emf/').replace('.png', '.emf');
				var linkToExcel = ImageSrc.toLowerCase().replace('/fullsize/', '/excel/').replace('.png', '.xls');
				linkBoxList.innerHTML = '<li class="emf"><a href="' + linkToEmf + '" target="_blank">' + TEXTHANDLER.DownloadEmfText + '</a></li><li class="excel"><a href="' + linkToExcel + '" target="_blank">' + TEXTHANDLER.DownloadExcelText + '</a></li>';
				DOM.Add(linkBoxList, linkBox);
				DOM.Add(linkBox, $('pop-content'));
			}
			if (Trigger.parentNode.getElementsByTagName('CITE')[0]) {
				var popCite = DOM.Create('CITE');
				var oCite = Trigger.parentNode.getElementsByTagName('CITE')[0];
				var strCite = oCite.innerHTML;
				if (strCite && DOM.GetAttribute(oCite, 'title')) {
					strCite = DOM.GetAttribute(oCite, 'title').toString();
				}
				popCite.innerHTML = strCite;
				DOM.Add(popCite, $('pop-content'));
			}
			if (Trigger.parentNode.parentNode.getElementsByTagName('P')[0]) {
				DOM.Add(Trigger.parentNode.parentNode.getElementsByTagName('P')[0].cloneNode(true), $('pop-content'));
			}
		}
	} else if (Trigger.parentNode.parentNode.className == 'additional graph-box') {
		var tables = Trigger.parentNode.parentNode.getElementsByTagName('TABLE');
		if (tables.length == 1) {
			table = tables[0];
			var tableClone = table.cloneNode(true);
			tableClone.getElementsByTagName('TH')[0].style.textAlign = 'left';
			$('pop-content').appendChild(tableClone);
			if (Trigger.getElementsByTagName('STRONG')[0]) {
				iPOP.Topic = Trigger.getElementsByTagName('STRONG')[0].innerHTML;
				$('pop-topic').getElementsByTagName('A')[0].innerHTML = iPOP.Topic;
			}
			if (Trigger.parentNode.getElementsByTagName('CITE')[0]) {
				var popCite = DOM.Create('CITE');
				var oCite = Trigger.parentNode.getElementsByTagName('CITE')[0];
				var strCite = oCite.innerHTML;
				if (strCite && DOM.GetAttribute(oCite, 'title')) {
					strCite = DOM.GetAttribute(oCite, 'title').toString();
				}
				popCite.innerHTML = strCite;
				DOM.Add(popCite, $('pop-content'));
			}
		} else {
			for (var i = 0, n = tables.length; i < n; i++) {
				var tableClone = tables[i].cloneNode(true);
				$('pop-content').appendChild(tableClone);
			}
			iPOP.Topic = Trigger.getElementsByTagName('STRONG')[0].innerHTML;
			$('pop-topic').getElementsByTagName('A')[0].innerHTML = iPOP.Topic;
			if (Trigger.parentNode.getElementsByTagName('CITE')[0]) {
				var popCite = DOM.Create('CITE');
				popCite.innerHTML = Trigger.parentNode.getElementsByTagName('CITE')[0].innerHTML;
				DOM.Add(popCite, $('pop-content'));
			}
		}
		CancelEvent(e);
	} else if (Trigger.className == 'wrapper' && Trigger.parentNode && Trigger.parentNode.className.indexOf('factbox') != -1) {
		iPOP.Topic = Trigger.getElementsByTagName('H3')[0].innerHTML;
		$('pop-topic').getElementsByTagName('A')[0].innerHTML = iPOP.Topic;
		var triggerContent = DOM.NextSibling(Trigger);
		$('pop-content').innerHTML = triggerContent.innerHTML;
	} else if (Parent && Parent.className.indexOf('division') != -1) {
		iPOP.Topic = Parent.getElementsByTagName('H3')[0].innerHTML;
		$('pop-topic').innerHTML = iPOP.Topic;
		$('pop-content').innerHTML = Parent.getElementsByTagName('DIV')[0].innerHTML;
	} else {
		iPOP.AddTextContent(topicLink, e);
	}

	if ($('pop-topic')) {
		$('pop-topic').style.width = iPOP.Width - 130 + 'px';
	}

	if (typeof sC == "object" && typeof sC.hhLogPopup == "function") {
		setTimeout(function() {
			var popupName = null;
			if (iPOP.Topic) {
				popupName = iPOP.Topic;
			} else if (topicLink) {
				popupName = topicLink;
			}
			sC.hhLogPopup(popupName);
		}, 1000);
	}

	//## ANIMATE VISIBILITY
	//## iPopAnimation.Start(X, Y, WIDTH ,HEIGHT);
	iPopAnimation.Start(iPOP.Left, iPOP.Top, iPOP.Width, iPOP.Height);
	TOOLTIP.Init();
};

function cubicOut(t, b, c, d) {return c*((t=t/d-1)*t*t + 1) + b;}
function cubicIn(t, b, c, d) {return c*(t/=d)*t*t + b;}

/* ANIMATION
----------------------------------------------------*/
var iPopAnimation = {
	Start: function(x, y, width, height) {
		var elmAnimator = $('pop-animator');
		if (elmAnimator) DOM.Remove(elmAnimator);
		elmAnimator = DOM.Create('DIV', '', 'pop-animator');
		elmAnimator.style.left = iPOP.TriggerX - 3 + 'px';
		elmAnimator.style.top = iPOP.TriggerY - 3 + 'px';
		this.Animator = elmAnimator;
		this.Animation = { time: 0, top: 0, left: 0, width: 0, height: 0, changeTop: 0, changeLeft: 0, changeHeight: 0, changeWidth: 0, duration: 0.0, timer: null, element: null };
		DOM.Add(elmAnimator, document.getElementsByTagName('BODY')[0]);
		iPopAnimation.Animation.time = 0;
		iPopAnimation.Animation.top = iPOP.TriggerY - 5;
		iPopAnimation.Animation.left = iPOP.TriggerX - 5;
		iPopAnimation.Animation.height = 0;
		iPopAnimation.Animation.width = 10;
		iPopAnimation.Animation.changeTop = y - iPopAnimation.Animation.top + 10;
		iPopAnimation.Animation.changeLeft = x - iPopAnimation.Animation.left;
		iPopAnimation.Animation.changeWidth = width;
		iPopAnimation.Animation.changeHeight = height;
		iPopAnimation.Animation.duration = 25;
		iPopAnimation.Animation.element = elmAnimator;
		iPopAnimation.Animation.timer = setInterval("iPopAnimation.Animate();", 15);
	},
	Close: function() {
		iPopAnimation.Animator.style.visibility = 'visible';
		iPopAnimation.Animation.time = 0;
		iPopAnimation.Animation.top = iPOP.Top;
		iPopAnimation.Animation.left = iPOP.Left;
		iPopAnimation.Animation.height = iPOP.Height;
		iPopAnimation.Animation.width = iPOP.Width;
		iPopAnimation.Animation.changeTop = parseInt(iPOP.TriggerY - iPOP.Top);
		iPopAnimation.Animation.changeLeft = parseInt(iPOP.TriggerX - iPOP.Left);
		iPopAnimation.Animation.changeWidth = -iPOP.Width;
		iPopAnimation.Animation.changeHeight = -iPOP.Height;
		iPopAnimation.Animation.duration = 25;
		iPopAnimation.Animation.element = iPopAnimation.Animator;
		iPopAnimation.Animation.timer = setInterval("iPopAnimation.Animate();", 15);
	},
	Stop: function() {
		DOM.Remove(iPopAnimation.Animator);
		clearInterval(iPopAnimation.Animation.timer);
		iPopAnimation.Animation.timer = null;
	},
	Animate: function() {
		var move = null;
		if (iPopAnimation.Animation.time >= iPopAnimation.Animation.duration) {
			clearInterval(iPopAnimation.Animation.timer);
			iPopAnimation.Animation.timer = null;
			iPopAnimation.Animation.duration = null;
			iPopAnimation.Animator.style.visibility = 'hidden';
			if (iPOP.iPop) {
				iPOP.iPop.style.visibility = 'visible';
			}
			return;
		} else {
			//## LEFT
			move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.left, iPopAnimation.Animation.changeLeft, iPopAnimation.Animation.duration)
			iPopAnimation.Animation.element.style.left = parseInt(move) + 'px';
			//## TOP
			move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.top, iPopAnimation.Animation.changeTop, iPopAnimation.Animation.duration)
			iPopAnimation.Animation.element.style.top = parseInt(move) + 'px';
			//## WIDTH
			move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.width, iPopAnimation.Animation.changeWidth, iPopAnimation.Animation.duration)
			iPopAnimation.Animation.element.style.width = parseInt(move) + 'px';
			//## HEIGHT
			move = cubicOut(iPopAnimation.Animation.time, iPopAnimation.Animation.height, iPopAnimation.Animation.changeHeight, iPopAnimation.Animation.duration)
			iPopAnimation.Animation.element.style.height = parseInt(move) + 'px';
			iPopAnimation.Animation.time++;
		}
	}
};





//------------------------------------------------------------------
//## LAYOUT
//------------------------------------------------------------------
LAYOUT.Init = function() {
	this.ContentDiv = $('content');
	this.TextLineHeight = 0;
	this.ColumnWidth = 0;
	this.ColumnMargin = 0;
	this.lastDimensions = getViewport.Height() + '.' + getViewport.Width()
	//## ENLARGE TEXT
	if (PAGE.TextSize == 'big') {
		LAYOUT.ColumnWidth = 390;
		LAYOUT.ColumnMargin = 20;
		LAYOUT.TextLineHeight = 17;
		LAYOUT.ContentDiv.className += ' large';
	} else {
		LAYOUT.ColumnWidth = 300;
		LAYOUT.ColumnMargin = 14;
		LAYOUT.TextLineHeight = 17;
		LAYOUT.ContentDiv.className = LAYOUT.ContentDiv.className.replace('large', '');
	}

	this.ColumnItterator = 0;

	this.CurrentColumn = 0;
	this.Columns = 0;
	this.ColumnStartPosition = 0;
	this.VisibleColumns = 0;
	this.LastVisibleColumn = null;

	this.ScrollDuration = 25;
	this.ScrollThread = null;
	this.ScrollLastPosition = 0;
	this.ScrollAnimation = { time: 0, begin: 0, change: 0.0, duration: 0.0, element: null, timer: null };

	this.OriginalContent = '';
	this.isResizing = null;
	this.TableHeader = null;

	if (PAGE.RenderMode == 'dynamic') {
		if (PAGE.LayoutMode == 'table') {
			LAYOUT.BuildTableLayout();
		} else if (PAGE.LayoutMode == 'special') {
			LAYOUT.BuildSpecialLayout();
		} else {
			LAYOUT.BuildColumnLayout();
		}
		EVENT.Add(window, 'resize', LAYOUT.ResetLayout);
		EVENT.Add(window, 'scroll', PAGE.CheckForOversize);
	}
	if (MENU.Submenu) {
		MENU.InitSubmenu();
	}

	LAYOUT.CleanTables();

};
LAYOUT.CleanTables = function() {
	var tables = DOM.GetByClassName(document, 'table', 'datatable');
	for (var i = 0, n = tables.length; i < n; i++) {
		DOM.SetAttribute(tables[i], 'cellspacing', '0');
		DOM.SetAttribute(tables[i], 'cellpadding', '0');
		DOM.SetAttribute(tables[i], 'border', '0');
	}
};
LAYOUT.ToggleFinancialTableWidth = function(e) {
	CancelEvent(e);
	LAYOUT.ClearAllGraphs();
	var scrollPanel = $('tablescrollpanel');
	isWide = (scrollPanel.className == 'wide');
	if (isWide) {
		scrollPanel.className = '';

		scrollPanel.parentNode.className = '';
		DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(scrollPanel)[0])[0])[0])[5].style.display = 'none';
	} else {
		scrollPanel.className = 'wide';
		scrollPanel.parentNode.className = 'wide';
		if (!isIE) {
			DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(scrollPanel)[0])[0])[0])[5].style.display = 'table-cell';
		} else {
			DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(DOM.ChildNodes(scrollPanel)[0])[0])[0])[5].style.display = 'block';
		}
	}
};
LAYOUT.InitGraphs = function(e) {
	var table = $('financial-table');
	var rows = table.getElementsByTagName('TR');
	for (var i = 0, n = rows.length; i < n; i++) {
		var row = rows[i];
		var td = row.cells[1];
		var nextTd = row.cells[2];
		var currCellValue = td.innerHTML.ToString().Linearize();
		if (!td.getElementsByTagName('IMG')[0] && td.className != 'radio') {
			if (row.parentNode.tagName == 'TBODY') {
				var newTd = LAYOUT.CreateCheckboxCell();
				DOM.AddBefore(newTd, td);
				if (nextTd && nextTd.className.indexOf('rubrikbrun') != -1) {
					newTd.innerHTML = '<br>';
				}
				if (nextTd && nextTd.innerHTML.toString().Linearize().toLowerCase() == '<br>') {
					newTd.innerHTML = '<br>';
				} else {
					newTd.style.cursor = 'pointer';
					EVENT.Add(newTd, 'click', LAYOUT.DisplayGraphBars);
				}
			} else {
				if (td.className != 'radio') {
					DOM.AddBefore(DOM.Create('TH', 'radio'), td);
				}
			}
		}
	}
};
LAYOUT.CreateCheckboxCell = function() {
	var cell = DOM.Create('TD', 'radio');
	var box = DOM.Create('IMG', 'graph-radio');
	DOM.SetAttribute(box, 'SRC', '../../gfx/radio-off.png');
	DOM.SetAttribute(box, 'width', '12');
	DOM.SetAttribute(box, 'height', '13');
	DOM.Add(box, cell);
	return cell;
};
LAYOUT.ClearAllGraphs = function() {
	var imgs = DOM.GetByClassName($('tablescrollpanel'), 'IMG', 'graph-radio');
	for (var i = 0, n = imgs.length; i < n; i++) {
		imgs[i].src = '../../gfx/radio-off.png';
	}
	var trs = $('financial-table').getElementsByTagName('tr');
	for (var i = 0, n = trs.length; i < n; i++) {
		trs[i].className = trs[i].className.replace('diagram', '');
	}
	if ($('bars')) DOM.Remove($('bars'));
};
LAYOUT.DisplayGraphBars = function(e) {
	var imgs = DOM.GetByClassName($('tablescrollpanel'), 'IMG', 'graph-radio');
	for (var i = 0, n = imgs.length, img = null; i < n; i++) {
		img = imgs[i];
		img.src = '../../gfx/radio-off.png';
	}
	//## CLEAR ALLA DIAGRAM ROWS FROM TABLE 
	var trs = $('financial-table').getElementsByTagName('tr');
	for (var i = 0, iLen = trs.length; i < iLen; i++) {
		trs[i].className = trs[i].className.replace('diagram', '');
	}
	if ($('bars')) $('bars').style.display = 'none';

	if (this == LAYOUT.CurrentRadio) {
		LAYOUT.CurrentRadio = null;
	} else {
		LAYOUT.CurrentRadio = this;
		this.getElementsByTagName('IMG')[0].src = '../../gfx/radio-on.png';
		//## INSERT CODE FOR DISPLAYING BARS!
		LAYOUT.ShowDiagram(this.parentNode, e);
	}
};
LAYOUT.FinancialTableScroll = function(e) {
	if ($('bars')) DOM.Remove($('bars'));
};
LAYOUT.ShowDiagram = function(tr, e) {
	var tableId = 'financial-table';
	if ($('bars')) DOM.Remove($('bars'));

	div = document.createElement('div');
	div.id = 'bars';
	for (var i = 0; i < 10; i++) {
		img = document.createElement('img');
		img.width = '7';
		div.appendChild(img);
	}
	DOM.Add(div, $('tablescrollpanel'));
	el = $(tableId).getElementsByTagName('div')[0];
	diagrambars = document.getElementById('bars').getElementsByTagName('IMG');
	tr.className = tr.className + ' diagram';
	diagramcells = tr.cells;
	cellvalue = new Array();
	max = -1000000;
	min = 1000000;
	label = DOM.ChildNodes(diagramcells[0])[0];
	if (DOM.GetByClassName($('content'), 'table', 'multiyeartoggler')[0]) {
		startItterator = 3;
	} else {
		startItterator = 2;
	}

	if (DOM.GetByClassName($('content'), 'table', 'datatable')[0] && !DOM.GetByClassName($('content'), 'table', 'multiyeartoggler')[0]) {
		startItterator = 2;
	}

	if (DOM.GetByClassName($('content'), 'table', 'datatable')[0] && !DOM.GetByClassName($('content'), 'table', 'multiyeartoggler')[0] && !DOM.GetByClassName($('content'), 'table', 'locked')[0]) {
		startItterator = 3;
	}

	for (var i = startItterator; i < diagramcells.length; i++) {
		cellvalue[i] = diagramcells[i].innerHTML.replace(/ /g, '');
		if (TRANSLATE.Lang == 'en') {
			cellvalue[i] = cellvalue[i].replace(',', '');
		} else {
			cellvalue[i] = cellvalue[i].replace('&nbsp;', '').replace(',', '.');
		}
		cellvalue[i] = parseFloat(cellvalue[i].ToString().toString().replace('–', '-'));
		if (cellvalue[i] < min) {
			min = cellvalue[i];
		}
		if (cellvalue[i] > max) {
			max = cellvalue[i];
		}
	}
	scale = 1;
	if (Math.abs(min) > max) {
		scale = -min;
	} else {
		scale = max;
	}
	scrollDivTop = $('tablescrollpanel').scrollTop;

	var left = parseInt(diagramcells[2].offsetLeft - 110);
	//var left = 490;
	if (left == -110) {
		left = 418;
	}

	if (DOM.GetByClassName($('content'), 'table', 'multiyeartoggler')[0]) {
		left = 490;
	}

	if (DOM.GetByClassName($('content'), 'table', 'datatable')[0] && !DOM.GetByClassName($('content'), 'table', 'multiyear')[0]) {
		left = 707;
	}

	var top = tr.offsetTop - 35 - scrollDivTop;
	for (var i = startItterator; i < diagramcells.length; i++) {
		if (isNaN(cellvalue[i])) {
			cellvalue[i] = 0;
		}
		height = (Math.abs(cellvalue[i]) / scale) * 100;
		diagrambars[i - 2].style.height = height + 'px';
		diagrambars[i - 2].style.left = left + 'px';
		if (cellvalue[i] < 0) {
			diagrambars[i - 2].className = 'negative';
			diagrambars[i - 2].style.top = top + 'px';
			diagrambars[i - 2].src = '../../gfx/diagramred.gif';
		}
		else {
			diagrambars[i - 2].className = '';
			diagrambars[i - 2].style.top = (top - height) + 'px';
			diagrambars[i - 2].src = '../../gfx/diagramblue.gif';
		}
		left += 72;
		if (isNaN(top - height) == false) diagrambars[i - 2].style.display = 'block';
	}

	if (isNaN(top - height) == false) {
		$('bars').style.display = 'block';
	}
};

LAYOUT.BuildTableLayout = function() {

	//## INIT MULTIYEAR TOGGLER
	var uri = location.href.toString().Linearize();
	var tablePages = new Array('KResultatrakning.html', 'KBalans.html', 'KEK.html');
	if (tablePages.existsIn(uri)) {
		var tbl = DOM.GetByClassName(document, 'table', 'datatable')[0];
		tbl.className = tbl.className + ' multiyear multiyeartoggler';
	}


	iPOP.Init();
	var tables = LAYOUT.ContentDiv.getElementsByTagName('TABLE');
	for (var i = 0, t = tables.length, table = null; i < t; i++) {
		table = tables[i];
		if (table.className.indexOf('datatable') > -1) {

			if (table.className.indexOf('multiyeartoggler') > -1) {

				var toogleMultiView = DOM.Create('DIV', '', 'headlinelink');
				var toogleMultiViewTrigger = DOM.Create('A');
				DOM.SetAttribute(toogleMultiViewTrigger, 'HREF', 'javascript:;');
				toogleMultiViewTrigger.innerHTML = TEXTHANDLER.FinancialTableMultiViewTrigger;
				EVENT.Add(toogleMultiViewTrigger, 'click', LAYOUT.ToggleFinancialTableWidth);
				DOM.Add(toogleMultiViewTrigger, toogleMultiView);
				DOM.Add(toogleMultiView, LAYOUT.ContentDiv);
				if (table.getElementsByTagName('THEAD')) {
					var tHeadRows = table.getElementsByTagName('THEAD')[0].rows.length;
					var tHeadTopicRow = table.getElementsByTagName('THEAD')[0].rows[tHeadRows - 1].className = 'main-header-row';
				}

				var oldlevel = 1;
				for (var r = 1, nn = table.rows.length, row = null; r < nn; r++) {
					row = table.rows[r];
					var className = row.className;
					var pos = className.indexOf('lev') + 3;
					var level = className.substring(pos, pos + 1);
					if (level > oldlevel) {
						var cell = table.rows[r - 1].cells[0];
						var tmplevel = level;
						while (tmplevel > 1) {
							tmplevel--;
							cell = cell.childNodes[0];
						}
						cell = cell.parentNode;
						if (!cell.getElementsByTagName('A')[0]) {//## CHECK SO WE DONT APPEND MULTIPLE ITEMS
							a = document.createElement('a');
							a.innerHTML = cell.innerHTML;
							a.href = 'javascript:;';
							EVENT.Add(a, 'click', LAYOUT.Swaprows);
							cell.innerHTML = '';
							cell.appendChild(a);
						}
					}
					oldlevel = level;
				}

				var rowCount = Math.floor((document.documentElement.clientHeight - LAYOUT.ContentDiv.offsetTop) / LAYOUT.TextLineHeight) - 5;
				var maxHeight = LAYOUT.TextLineHeight * rowCount;
				var contentHeight = LAYOUT.ContentDiv.scrollHeight;
				var tableheight = maxHeight;
				var TableScrollPanel = $('tablescrollpanel');
				if (table.className.indexOf('scrollable') > -1) {
					table = document.createElement('table');
					table.className = table.className;
					table.cellSpacing = '0';
					table.appendChild(document.createElement('tbody'));
					table = table.childNodes[0];
					table.appendChild(tables[i].rows[0]); // append first row
					if (table.rows[0].cells[1].tagName == 'TH') {
						table.appendChild(tables[i].rows[0]); // append second row
					}
					table.parentNode.insertBefore(table.parentNode, table);
					tableheight -= table.offsetHeight;
					tablescrollpanel = document.createElement('div');
					tablescrollpanel.className = 'tablescrollpanel';
					table.parentNode.appendChild(tablescrollpanel);
					tablescrollpanel.appendChild(tables[i + 1]);
					return;
				} else {
					if (!TableScrollPanel) {
						TableScrollPanel = document.createElement('div');
						TableScrollPanel.id = 'tablescrollpanel';
						table.parentNode.insertBefore(TableScrollPanel, table.parentNode.firstChild);
						TableScrollPanel.appendChild(table);
					}
				}

			} else {

				var oldlevel = 1;
				for (var r = 1, nn = table.rows.length, row = null; r < nn; r++) {
					row = table.rows[r];
					var className = row.className;
					var pos = className.indexOf('lev') + 3;
					var level = className.substring(pos, pos + 1);
					if (level > oldlevel) {
						var cell = table.rows[r - 1].cells[0];
						var tmplevel = level;
						while (tmplevel > 1) {
							tmplevel--;
							cell = cell.childNodes[0];
						}
						cell = cell.parentNode;
					}
					oldlevel = level;
				}

				var rowCount = Math.floor((document.documentElement.clientHeight - LAYOUT.ContentDiv.offsetTop) / LAYOUT.TextLineHeight) - 5;
				var maxHeight = LAYOUT.TextLineHeight * rowCount;
				var contentHeight = LAYOUT.ContentDiv.scrollHeight;
				var tableheight = maxHeight;
				var TableScrollPanel = DOM.Create('div', '', 'tablescrollpanel');
				TableScrollPanel.className = 'wide';
				$('content').style.width = 'auto';
				table.parentNode.insertBefore(TableScrollPanel, table.parentNode.firstChild);
				DOM.Add(table, TableScrollPanel);
			}
		}

		LAYOUT.InitGraphs();
	}
};

LAYOUT.BuildTableLayout_OLDOLDOLDOLDOLDOLDOLD = function() {
	iPOP.Init();
	LAYOUT.InitGraphs();
	var tables = LAYOUT.ContentDiv.getElementsByTagName('TABLE');
	for (var i = 0, t = tables.length, table = null; i < t; i++) {
		table = tables[i];
		if (table.className.indexOf('datatable') > -1) {

			var oldlevel = 1;
			for (var r = 1, nn = table.rows.length, row = null; r < nn; r++) {
				row = table.rows[r];
				var className = row.className;
				var pos = className.indexOf('lev') + 3;
				var level = className.substring(pos, pos + 1);
				if (level > oldlevel) {
					var cell = table.rows[r - 1].cells[0];
					var tmplevel = level;
					while (tmplevel > 1) {
						tmplevel--;
						cell = cell.childNodes[0];
					}
					cell = cell.parentNode;
				}
				oldlevel = level;
			}
		}
		var rowCount = Math.floor((document.documentElement.clientHeight - LAYOUT.ContentDiv.offsetTop) / LAYOUT.TextLineHeight) - 5;
		var maxHeight = LAYOUT.TextLineHeight * rowCount;
		var contentHeight = LAYOUT.ContentDiv.scrollHeight;
		var tableheight = maxHeight;
		var TableScrollPanel = DOM.Create('div', '', 'tablescrollpanel');
		if ($('financial-table').className.indexOf('multiyear') != -1) {
			TableScrollPanel.className = 'wide';
			$('content').style.width = 'auto';
		}
		table.parentNode.insertBefore(TableScrollPanel, table.parentNode.firstChild);
		DOM.Add(table, TableScrollPanel);
	}

};
LAYOUT.CreateHeaderClone = function(table, override) {
	var tHeadClone = $('head-clone');
	var headCloneClass = ($('tablescrollpanel').className == 'wide') ? 'wide' : '';
	if (!tHeadClone || override) {
		if (tHeadClone) DOM.Remove(tHeadClone);
		var tHead = table.getElementsByTagName('THEAD')[0];
		tHead = tHead.cloneNode(true);
		tHeadClone = DOM.Create('DIV', headCloneClass, 'head-clone');
		tHeadClone.innerHTML = '<table id="financial-table" class="datatable"><thead>' + tHead.innerHTML + '</thead></table>';
		DOM.Add(tHeadClone, LAYOUT.ContentDiv);
		tHeadClone.style.top = $('tablescrollpanel').offsetTop + 'px';
		tHeadClone.style.left = $('tablescrollpanel').offsetLeft + 'px';
	}
	LAYOUT.TableHeader = tHeadClone;
};
LAYOUT.Swaprows = function(e) {
	if (document.addEventListener) {
		e.preventDefault();
		a = e.target;
		if (a.className != 'expanded') {
			a.className = 'expanded';
			viewtype = 'table-row';
		} else {
			a.className = '';
			viewtype = 'none';
		}
	} else {
		e.cancelBubble = true;
		a = e.srcElement;
		if (a.className != 'expanded') {
			a.className = 'expanded';
			viewtype = 'block';
		} else {
			a.className = '';
			viewtype = 'none';
		}
	}
	tr = a.parentNode;
	while (tr.tagName != 'TR') {
		tr = tr.parentNode;
	}
	if (a.className != 'expanded') {
		tr.className = tr.className.replace(' expanded', '');
	} else {
		tr.className += ' expanded';
	}
	var textindex = tr.className.indexOf('lev');
	startlevel = parseInt(tr.className.substring(textindex + 3, textindex + 4));
	level = startlevel + 1;
	var rowindex = tr.rowIndex;
	tr = tr.parentNode.rows[rowindex - 1];
	while (startlevel < level) {
		if (startlevel == (level - 1) || viewtype == 'none') {
			if (a.parentNode.parentNode != tr) tr.style.display = viewtype;
		}
		if (tr.parentNode.rows.length <= rowindex + 1) break;
		rowindex++;
		tr = tr.parentNode.rows[rowindex - 1];
		textindex = tr.className.indexOf('lev');
		level = parseInt(tr.className.substring(textindex + 3, textindex + 4));
	}
	LAYOUT.ClearAllGraphs();
	return false;
};
LAYOUT.BuildSpecialLayout = function() {
	LAYOUT.ReplaceTablesWithIcon();
	$('content').style.width = '960px';
	if ($('micro-scroll')) {
		LAYOUT.ContentDiv = $('micro-scroll');
		LAYOUT.BuildMicroColumnLayout();
	}

	//## INTRO
	if ($('specialsida').className == 'intro') {
		var introImg = $('specialsida').getElementsByTagName('IMG')[0];
		document.getElementsByTagName('H1')[0].style.display = 'none';
		var introWidth = (getViewport.Width() - 22);
		$('content').style.width = introWidth + 'px';
		introImg.style.width = '1076px';
	}

	//## ALLOCATION OF EARNINGS
	if ($('specialsida').className == 'allocation-of-earnings') {
		var signTable = document.getElementsByTagName('TABLE')[1];
		signTable.className = signTable.className + ' signtable';
	}

	//## BOARD
	if ($('specialsida').className == 'board') {
		LAYOUT.ScrollTo(3); 
		return false;
	}	

	LAYOUT.InitInlineIllustrations();
	PAGE.CheckForOversize();
};
LAYOUT.ReplaceTablesWithIcon = function() {
	if (PAGE.RenderMode == 'static') return;
	var tables = DOM.GetByClassName($('content'), 'table', 'datatable');
	for (var z = 0, n = tables.length; z < n; z++) {
		var table = tables[z];
		if ((table.className.indexOf('locked') == -1) && (table.className.indexOf('chain-previous') == -1)) {
			var tableBorder = DOM.GetAttribute(table, 'border');
			if (!tableBorder == '0') DOM.SetAttribute(table, 'border', '0');
			var tableWrapper = DOM.Create('DIV', 'additional graph-box');
			var container = DOM.Create('DIV', 'graph-container');
			EVENT.Add(tableWrapper, 'mouseover', FUNCTIONS.GraphBox_MouseOver);
			EVENT.Add(tableWrapper, 'mouseout', FUNCTIONS.GraphBox_MouseOut);
			var GraphBoxHeadline = ' ';
			if (table.previousSibling) {
				GraphBoxHeadline = DOM.PreviousSibling(table);
				if (GraphBoxHeadline && GraphBoxHeadline.tagName) {
					if (GraphBoxHeadline.tagName.toLowerCase() == 'h6') {
						GraphBoxHeadline.style.display = 'none';
						GraphBoxHeadline = GraphBoxHeadline.innerHTML.ToString();
					} else {
						GraphBoxHeadline = ' ';
					}
				} else {
					GraphBoxHeadline = ' ';
				}
			}
			var GraphBoxCite = ' ';
			if (table.nextSibling) {
				GraphBoxCite = DOM.NextSibling(table);
				if (GraphBoxCite && GraphBoxCite.tagName) {
					if (GraphBoxCite.tagName.toLowerCase() == 'cite') {
						GraphBoxCite.style.display = 'none';
						var strCite = GraphBoxCite.innerHTML.ToString();
						if (strCite.length > 35) {
							GraphBoxCite = strCite.substring(0, 35) + ' ...';
						} else {
							GraphBoxCite = strCite;
						}
					} else {
						GraphBoxCite = ' ';
					}
				} else {
					GraphBoxCite = ' ';
				}
			}
			var link = DOM.Create('A', '');
			link.innerHTML = '<strong>' + GraphBoxHeadline + '</strong><img src="../../gfx/icon-table.gif" alt="" />';
			DOM.SetAttribute(link, 'href', 'javascript:;');
			DOM.SetAttribute(link, 'rel', 'inline');
			DOM.Add(link, container);
			var btn = DOM.Create('span', 'zoom');
			btn.innerHTML = '';
			btn.title = 'Zoom';
			DOM.Add(btn, link);
			var wrapper = DOM.Create('DIV', 'ipop-table');
			wrapper.innerHTML = '<table class="' + table.className.toString() + '">' + table.innerHTML + '</table>';
			DOM.Add(wrapper, container);
			var cite = DOM.Create('cite');
			if (strCite) DOM.SetAttribute(cite, 'title', strCite);
			cite.innerHTML = GraphBoxCite.ToString();
			DOM.Add(cite, container);
			DOM.Add(container, tableWrapper);
			table.parentNode.replaceChild(tableWrapper, table);
		} else if (table.className.indexOf('chain-previous') != -1) {
			var tableSibling = DOM.ChildNodes(DOM.ChildNodes(DOM.PreviousSibling(table))[0])[1];
			DOM.Add(table, tableSibling);
		}
	}
	return;
};
LAYOUT.BuildMicroColumnLayout = function() {

	var elCount = 0;
	LAYOUT.ColumnWidth = 500;
	LAYOUT.ColumnMargin = 15;
	LAYOUT.TextLineHeight = 17;

	LAYOUT.ContentDiv.className = '';
	LAYOUT.ContentDiv.style.padding = '0';
	LAYOUT.ContentDiv.style.overflow = 'hidden';

	if (LAYOUT.OriginalContent == '') {
		LAYOUT.OriginalContent = LAYOUT.ContentDiv.innerHTML;
	} else {
		LAYOUT.ContentDiv.innerHTML = LAYOUT.OriginalContent;
	}

	var rowCount = Math.floor((document.documentElement.clientHeight - LAYOUT.ContentDiv.offsetTop) / LAYOUT.TextLineHeight) - 5;
	var maxHeight = $('leftcontent').offsetHeight;
	var contentHeight = LAYOUT.ContentDiv.scrollHeight;
	if (contentHeight < maxHeight) return;
	var columns = DOM.Create('div', '', 'columns');
	columns.style.height = maxHeight - 14 + 'px';
	columns.style.overflow = 'hidden';

	//## SETUP DIVS FOR THE HORIZONTAL SCROLLING FEATURE
	LAYOUT.scrollPanel = DOM.Create('div', '', 'scrollpanel');
	DOM.Add(columns, LAYOUT.scrollPanel);
	DOM.Add(LAYOUT.scrollPanel, LAYOUT.ContentDiv);

	var nextOffset = 0;
	var lastColumnHeight = 0;
	var heightRemainder = 0;

	elCount = DOM.ChildNodes(LAYOUT.ContentDiv).length;

	if (elCount < 1) return;

	while ((elCount > 1) && (LAYOUT.ColumnItterator < 100)) {
		LAYOUT.ColumnItterator++;
		var column = DOM.Create('div', 'column', 'col-' + LAYOUT.Columns);
		column.style.marginTop = (-nextOffset) + 'px';
		columns.appendChild(column);
		while ((elCount > 1) && (LAYOUT.ColumnItterator < 100)) {
			DOM.Add(DOM.ChildNodes(LAYOUT.ContentDiv)[0], column);
			elCount--;
			if (column.lastChild.tagName == 'P') {
				if (column.scrollHeight > (maxHeight + nextOffset)) { //## IF COL IS FULL
					if ((column.lastChild.className.indexOf('additional') != -1) || (column.lastChild.className.indexOf('illustration') != -1)) {
						LAYOUT.ContentDiv.insertBefore(column.lastChild, LAYOUT.ContentDiv.firstChild);
						elCount++;
						//## ADDED BY TED 2008-03-17 TO CIRCUMVENT BUG IN FIREFOX WHICH CAUSES AN INFINITE LOOP
						if (navigator.userAgent.indexOf("Firefox") != -1) {
							nextOffset = 1; 
						}else {
							nextOffset = 0; 
						}
					} else {
						var elHeight = (column.scrollHeight - lastColumnHeight);
						if (elHeight > maxHeight) {
							LAYOUT.ContentDiv.insertBefore(column.lastChild.cloneNode(true), DOM.FirstChild(LAYOUT.ContentDiv));
							elCount++;
							heightRemainder = (column.scrollHeight - (maxHeight + nextOffset));
							nextOffset = (elHeight - heightRemainder);
							lastColumnHeight = 0;
						} else if ((column.scrollHeight - (maxHeight + nextOffset) == LAYOUT.TextLineHeight) && (elHeight != LAYOUT.TextLineHeight)) {
							nextOffset = 0;
						} else {
							LAYOUT.ContentDiv.insertBefore(column.lastChild.cloneNode(true), LAYOUT.ContentDiv.firstChild);
							elCount++;
							column.lastChild.className = column.lastChild.className + ' noprint';
							heightRemainder = (column.scrollHeight - maxHeight);
							nextOffset = (elHeight) - (heightRemainder) + nextOffset;
							if (nextOffset == 0) {
								column.removeChild(column.lastChild);
								var lastElem = DOM.ChildNodes(column)[DOM.ChildNodes(column).length - 1];
								if (lastElem.tagName) {
									if (lastElem.tagName.toUpperCase().substring(0, 1) == 'H') {
										LAYOUT.ContentDiv.insertBefore(lastElem, LAYOUT.ContentDiv.firstChild);
										elCount++;
									}
								}
							}
						}
					}
				}
				break;
			}
			lastColumnHeight = column.scrollHeight;
		}
		LAYOUT.Columns++;
	}

	columns.style.width = parseInt(LAYOUT.ColumnWidth * LAYOUT.Columns + LAYOUT.ColumnMargin * (LAYOUT.Columns - 1)) + 'px';
	column.style.marginRight = '0';
	var screenWidth = $('specialsida').offsetWidth;
	if (parseInt(columns.style.width) < screenWidth) {
		screenWidth = parseInt(columns.style.width);
	}

	LAYOUT.VisibleColumns = Math.floor(screenWidth / LAYOUT.ColumnWidth);
	LAYOUT.LastVisibleColumn = DOM.GetByClassName($('columns'), 'DIV', 'column')[LAYOUT.VisibleColumns - 1];
	LAYOUT.ContentDiv.style.width = LAYOUT.ColumnWidth + 'px';
	LAYOUT.scrollPanel.style.width = LAYOUT.scrollPanel.parentNode.offsetWidth - (LAYOUT.ColumnMargin + LAYOUT.ColumnMargin) + 'px';
	LAYOUT.scrollPanel.style.overflowY = 'hidden';
	LAYOUT.scrollPanel.style.height = maxHeight + 'px';
	LAYOUT.ContentDiv.appendChild(LAYOUT.scrollPanel);
	EVENT.Add(LAYOUT.scrollPanel, 'scroll', LAYOUT.adjustScroll);
	PAGE.CheckForOversize();
};
LAYOUT.InitInlineIllustrations = function() {
	//## INITIALIZE INLINE ILLUSTRATIONS
	if (PAGE.RenderMode == 'static') return;
	var divs = DOM.GetByClassName($('content'), 'div', 'illustration')
	for (var i = 0, iLen = divs.length; i < iLen; i++) {
		var div = divs[i];
		Console.Info(div.parentNode.tagName);
		//if (div.parentNode.tagName.toString().toLowerCase() == 'th') return;
		var link = DOM.GetByAttribute(div, 'A', 'rel', 'inline')[0];
		if (link) {
			var GraphBoxHeadline = null;
			if (div.previousSibling) {
				GraphBoxHeadline = DOM.PreviousSibling(div);
				if (GraphBoxHeadline && GraphBoxHeadline.tagName) {
					if (GraphBoxHeadline.tagName.toLowerCase() == 'h6') {
						GraphBoxHeadline.style.display = 'none';
						var strong = DOM.Create('STRONG');
						var strStrong = GraphBoxHeadline.innerHTML.ToString();
						strong.innerHTML = strStrong;
						DOM.AddFirst(strong, link);
					}
				}
			}
			var GraphBoxCite = null;
			if (div.nextSibling) {
				GraphBoxCite = DOM.NextSibling(div);
				if (GraphBoxCite && GraphBoxCite.tagName) {
					if (GraphBoxCite.tagName.toLowerCase() == 'cite') {
						GraphBoxCite.style.display = 'none';
						var cite = DOM.Create('CITE');
						var strCite = GraphBoxCite.innerHTML.ToString();
						if (strCite) {
							if (strCite.length > 35) {
								cite.innerHTML = strCite.substring(0, 35) + ' ...';
							} else {
								cite.innerHTML = strCite;
							}
							DOM.SetAttribute(cite, 'title', strCite);
						}
						DOM.Add(cite, link);
					}
				}
			}
			div.className = div.className + ' graph-box';
			var btn = DOM.Create('span', 'zoom');
			btn.innerHTML = ' ';
			btn.title = 'Zoom';
			DOM.Add(btn, link);
			var container = DOM.Create('DIV', 'graph-container');
			DOM.Add(link, container);
			DOM.Add(container, div);
			EVENT.Add(container, 'mouseover', FUNCTIONS.GraphBox_MouseOver);
			EVENT.Add(container, 'mouseout', FUNCTIONS.GraphBox_MouseOut);
			//## PRELOAD BIG ILLUSTRATIONS
			var thumbImageSrc = DOM.GetAttribute(link, 'href').toString();
			var bigImage = new Image();
			bigImage.src = thumbImageSrc.toString();
		}
	}
};
LAYOUT.EnableFactBoxes = function() {
	var facts = DOM.GetByClassName($('content'), 'div', 'facts');
	for (var i = 0, n = facts.length; i < n; i++) {
		var fact = facts[i];
		var factTopic = fact.getElementsByTagName('H6')[0];
		var factImage = fact.getElementsByTagName('IMG')[0];
		var factLink = fact.getElementsByTagName('A')[0];
		factLink.innerHTML = '';
		DOM.Add(factTopic, factLink);
		if(factImage != null)
			DOM.Add(factImage, factLink);
			
		var newInput = DOM.Create('DIV', 'wrapper');
		
		DOM.Add(factLink, newInput);
		fact.style.cursor = 'pointer';
		fact.innerHTML = '';
		fact.className = 'factbox additional';
		DOM.Add(newInput, fact);
	}
};
LAYOUT.BuildColumnLayout = function() {
	if ($('submenu') != null && $('scrollWithNodeNav') == null) {
		//## THIS IS A FINANCIAL TABLE (NOTE)
		$('content').style.width = '960px';
		return;
	}
	if (!LAYOUT.ContentDiv) LAYOUT.ContentDiv = $('content');
	LAYOUT.EnableFactBoxes();
	LAYOUT.ReplaceTablesWithIcon();
	var elCount = 0;

	if (PAGE.TextSize == 'big') {
		LAYOUT.ColumnWidth = 390;
		LAYOUT.ColumnMargin = 20;
		LAYOUT.TextLineHeight = 17;
		LAYOUT.ContentDiv.className = 'large';
	} else {
		LAYOUT.ColumnWidth = 300;
		LAYOUT.ColumnMargin = 14;
		LAYOUT.TextLineHeight = 17;
		LAYOUT.ContentDiv.className = '';
	}

	LAYOUT.ContentDiv.style.padding = '0';
	LAYOUT.ContentDiv.style.overflow = 'hidden';
	if (LAYOUT.OriginalContent == '') {
		LAYOUT.OriginalContent = LAYOUT.ContentDiv.innerHTML;
	} else {
		LAYOUT.ContentDiv.innerHTML = LAYOUT.OriginalContent;
	}
	var rowCount = Math.floor((document.documentElement.clientHeight - LAYOUT.ContentDiv.offsetTop) / LAYOUT.TextLineHeight) - 5;
	var maxHeight = LAYOUT.TextLineHeight * rowCount;
	var contentHeight = LAYOUT.ContentDiv.scrollHeight;

	var columns = DOM.Create('div', '', 'columns');
	columns.style.height = maxHeight + 'px';
	columns.style.overflow = 'hidden';

	var pagenumbers = DOM.Create('div', '', 'pagenumbers');

	//## SETUP DIVS FOR THE HORIZONTAL SCROLLING FEATURE
	LAYOUT.scrollPanel = DOM.Create('div', '', 'scrollpanel');
	DOM.Add(columns, LAYOUT.scrollPanel);
	DOM.Add(pagenumbers, LAYOUT.scrollPanel);
	DOM.Add(LAYOUT.scrollPanel, LAYOUT.ContentDiv);

	LAYOUT.InitInlineIllustrations();

	var nextOffset = 0;
	var lastColumnHeight = 0;
	var heightRemainder = 0;
	elCount = DOM.ChildNodes($('content')).length;
	if (elCount < 1) return;
	var backupItterator = 0;

	while ((elCount > 1) && (backupItterator < 100)) {
		backupItterator++;
		var column = DOM.Create('div', 'column', 'col-' + LAYOUT.Columns);
		column.style.marginTop = (-nextOffset) + 'px';
		columns.appendChild(column);
		while ((elCount > 1) && (backupItterator < 100)) {
			if (DOM.ChildNodes(LAYOUT.ContentDiv)[0].id !== 'scrollpanel') {
				DOM.Add(DOM.ChildNodes(LAYOUT.ContentDiv)[0], column);
			}
			elCount--;
			if (column.scrollHeight > (maxHeight + nextOffset)) { //## IF COL IS FULL
				if ((column.lastChild.className.indexOf('additional') != -1) || (column.lastChild.className.indexOf('illustration') != -1)) {
					LAYOUT.ContentDiv.insertBefore(column.lastChild, LAYOUT.ContentDiv.firstChild);
					elCount++;
					//## ADDED BY TED 2008-03-17 TO CIRCUMVENT BUG IN FIREFOX WHICH CAUSES AN INFINITE LOOP
					if (navigator.userAgent.indexOf("Firefox") != -1) { nextOffset = 1; }
					else { nextOffset = 0; }
				} else {
					var elHeight = (column.offsetHeight - lastColumnHeight);
					if (elHeight > maxHeight) {
						LAYOUT.ContentDiv.insertBefore(column.lastChild.cloneNode(true), LAYOUT.ContentDiv.firstChild);
						column.lastChild.className = column.lastChild.className + ' noprint'; //Hj
						elCount++;
						heightRemainder = (column.scrollHeight - (maxHeight + nextOffset));
						nextOffset = (elHeight - heightRemainder);
						lastColumnHeight = 0;
					} else if ((column.scrollHeight - (maxHeight + nextOffset) == LAYOUT.TextLineHeight) && (elHeight != LAYOUT.TextLineHeight)) {
						elCount++;
						nextOffset = 0;
					} else {
						LAYOUT.ContentDiv.insertBefore(DOM.LastChild(column).cloneNode(true), LAYOUT.ContentDiv.firstChild);
						elCount++;
						column.lastChild.className = column.lastChild.className + ' noprint';
						heightRemainder = (column.scrollHeight - maxHeight);
						nextOffset = (elHeight) - (heightRemainder) + nextOffset;
						if (nextOffset == 0) {
							DOM.Remove(DOM.LastChild(column));
							var lastElem = DOM.ChildNodes(column)[DOM.ChildNodes(column).length - 1];
							if (lastElem.tagName) {
								if (lastElem.tagName.toUpperCase().substring(0, 1) == 'H') {
									LAYOUT.ContentDiv.insertBefore(lastElem, LAYOUT.ContentDiv.firstChild);
									elCount++;
								}
							}
						}
					}
				}
				break;
			}
			lastColumnHeight = column.scrollHeight;
		}
		LAYOUT.Columns++;
	}

	//## ADD PAGENUMBERS
	if (DOM.ChildNodes(columns)) {
		for (var i = 0, n = DOM.ChildNodes(columns).length; i < n; i++) {
			pagenumber = document.createElement('div');
			pagenumber.innerHTML = (i + 1) + ' (' + LAYOUT.Columns + ')';
			pagenumbers.appendChild(pagenumber);
		}
		columns.style.width = parseInt(LAYOUT.ColumnWidth * LAYOUT.Columns + LAYOUT.ColumnMargin * (LAYOUT.Columns - 1)) + 'px';
		column.style.marginRight = '0';
		pagenumber.style.marginRight = '0';
		pagenumbers.style.width = columns.style.width;
	}
	var screenWidth = document.documentElement.clientWidth;
	if (PAGE.TextSize == 'big') {
		if (screenWidth >= 1620) { screenWidth = 1620 }
		else if (screenWidth >= 1210) { screenWidth = 1210 }
		else { screenWidth = 800 }
	} else {
		if (screenWidth >= 1870) { screenWidth = 1870 }
		else if (screenWidth >= 1556) { screenWidth = 1556 }
		else if (screenWidth >= 1242) { screenWidth = 1242 }
		else { screenWidth = 928 }
	}
	if (parseInt(columns.style.width) < screenWidth) {
		screenWidth = parseInt(columns.style.width);
	}
	LAYOUT.VisibleColumns = Math.floor(screenWidth / LAYOUT.ColumnWidth);
	LAYOUT.LastVisibleColumn = DOM.GetByClassName($('columns'), 'DIV', 'column')[LAYOUT.VisibleColumns - 1];
	LAYOUT.ContentDiv.style.width = screenWidth + 'px';
	LAYOUT.scrollPanel.style.width = screenWidth + 'px';
	LAYOUT.scrollPanel.style.height = ((rowCount * LAYOUT.TextLineHeight) + 55) + 'px';
	DOM.Add(LAYOUT.scrollPanel, LAYOUT.ContentDiv);
	EVENT.Add(LAYOUT.scrollPanel, 'scroll', LAYOUT.adjustScroll);

	//## SCROLL TO SEARCH HIT?
	var pos = location.href.indexOf('#');
	if (pos > 0) {
		var anc = location.href.substring(pos + 1);
		var pos2 = location.href.indexOf('&', pos)
		if (pos2 !== -1) {
			anc = 'id' + location.href.substring(pos + 1);
		} else {
			anc = 'id' + location.href.substring(pos + 1, pos2);
			sword = location.href.substring(pos2 + 3);
			if (sword.length > 2) {
				sword = unescape(sword).replace(/ +/g, '(\\s+|\\s*<[^>]*>\\s*)');
				var re = new RegExp(">([^<]*)(" + sword + ")", "igm");
				LAYOUT.scrollPanel.innerHTML = LAYOUT.scrollPanel.innerHTML.replace(re, ">$1<span class=\"highlight\">$2</span>");
			}
		}
		if (pos2 - pos - 1 != 0 && location.href.length - pos - 1 != 0) {
			h = $(anc);
			if (!h) return;
			span = document.createElement('span');
			span.className = 'highlight';
			span.innerHTML = h.innerHTML;
			h.innerHTML = '';
			h.appendChild(span);
			col = parseInt(h.parentNode.id.substring(4));
			if (col > 0) ScrollTo(col);
		}
	}

	PAGE.CheckForOversize();
};
LAYOUT.adjustScroll = function(e) {
	if (LAYOUT.ScrollThread != null) clearTimeout(LAYOUT.ScrollThread);
	LAYOUT.ScrollThread = setTimeout("LAYOUT.doAdjustscroll()", 300);
};
LAYOUT.doAdjustscroll = function() {
	var adjustment = parseInt(LAYOUT.scrollPanel.scrollLeft % (LAYOUT.ColumnWidth + LAYOUT.ColumnMargin));
	if (adjustment != 0) {
		if (Math.abs(adjustment) <= 10) { //## LEFT			
			LAYOUT.ScrollNext();
		} else if (Math.abs(adjustment - (LAYOUT.ColumnWidth + LAYOUT.ColumnMargin)) <= 10) { //## RIGHT
			LAYOUT.ScrollPrevious();
		} else { //## NEAREST
			if (adjustment > (LAYOUT.ColumnWidth / 2)) { //## ADJUST TO RIGHT
				LAYOUT.ScrollTo(parseInt(LAYOUT.scrollPanel.scrollLeft / (LAYOUT.ColumnWidth + LAYOUT.ColumnMargin)) + 1);
			} else { //## ADJUST TO LEFT
				LAYOUT.ScrollTo(parseInt(LAYOUT.scrollPanel.scrollLeft / (LAYOUT.ColumnWidth + LAYOUT.ColumnMargin)));
			}
		}
	} else {
		LAYOUT.CurrentColumn = (LAYOUT.scrollPanel.scrollLeft / (LAYOUT.ColumnWidth + LAYOUT.ColumnMargin));
	}
	LAYOUT.ScrollLastPosition = LAYOUT.scrollPanel.scrollLeft;
};
LAYOUT.ScrollNext = function() {
	iPOP.Close();
	if (LAYOUT.CurrentColumn + LAYOUT.VisibleColumns >= LAYOUT.Columns) {
		LAYOUT.ScrollTo(LAYOUT.Columns - 1)
	} else {
		LAYOUT.OffsetScroll(LAYOUT.VisibleColumns - 1);
	}
};
LAYOUT.ScrollPrevious = function() {
	iPOP.Close();
	var targetColumn = (-(LAYOUT.VisibleColumns - 1));
	if (LAYOUT.VisibleColumns == 1)
		targetColumn--;
	if (LAYOUT.CurrentColumn > 1) {
		LAYOUT.OffsetScroll(targetColumn);
	} else {
		LAYOUT.OffsetScroll(-1);
	}
};
LAYOUT.OffsetScroll = function(offset) {
	var target = LAYOUT.CurrentColumn + offset;
	if (target < 0 || target > LAYOUT.Columns) return;
	LAYOUT.ScrollTo(target);
};
LAYOUT.ScrollTo = function(target) {
	if (target < 0) return;
	LAYOUT.doScrollTo(target);
};
LAYOUT.doScrollTo = function(target) {
	if (target >= LAYOUT.Columns) return;
	LAYOUT.CurrentColumn = target;
	targetcol = $('col-' + target);
	var offsetLeft;
	if (target == (LAYOUT.Columns - 1)) {
		offsetLeft = LAYOUT.scrollPanel.scrollWidth - LAYOUT.scrollPanel.offsetWidth;
	} else {
		offsetLeft = 0;
		do {
			offsetLeft += targetcol.offsetLeft;
		} while (targetcol = targetcol.offsetParent)

		targetcol = $('col-0');
		LAYOUT.ColumnStartPosition = 0;
		do {
			LAYOUT.ColumnStartPosition += targetcol.offsetLeft;
		} while (targetcol = targetcol.offsetParent)
		offsetLeft -= LAYOUT.ColumnStartPosition;
	}
	if (LAYOUT.ScrollAnimation.timer != null) {
		clearInterval(LAYOUT.ScrollAnimation.timer);
		LAYOUT.ScrollAnimation.timer = null;
	}
	LAYOUT.ScrollAnimation.time = 0;
	LAYOUT.ScrollAnimation.begin = LAYOUT.scrollPanel.scrollLeft;
	LAYOUT.ScrollAnimation.change = offsetLeft - LAYOUT.scrollPanel.scrollLeft;
	LAYOUT.ScrollAnimation.duration = LAYOUT.ScrollDuration;
	LAYOUT.ScrollAnimation.element = LAYOUT.scrollPanel;
	LAYOUT.ScrollAnimation.timer = setInterval("LAYOUT.scrollHorizAnim();", 15);
};
LAYOUT.scrollHorizAnim = function() {
	if (LAYOUT.ScrollAnimation.time > LAYOUT.ScrollAnimation.duration) {
		clearInterval(LAYOUT.ScrollAnimation.timer);
		LAYOUT.ScrollAnimation.timer = null;
	} else {
		move = -LAYOUT.ScrollAnimation.change / 2 * (Math.cos(Math.PI * LAYOUT.ScrollAnimation.time / LAYOUT.ScrollAnimation.duration) - 1) + LAYOUT.ScrollAnimation.begin;
		LAYOUT.ScrollAnimation.element.scrollLeft = move;
		LAYOUT.ScrollAnimation.time++;
	}
};
LAYOUT.ResetLayout = function() {
	if (LAYOUT.isResizing != null) {
		clearTimeout(LAYOUT.isResizing);
	}
	LAYOUT.isResizing = setTimeout("LAYOUT.doResetLayout()", 300);
	if (MENU.Cover) {
		MENU.Cover.style.height = getViewport.Height() + 'px';
	}
};
LAYOUT.doResetLayout = function() {
	switch (PAGE.LayoutMode) {
		case 'table':
			LAYOUT.BuildTableLayout();
			break;
		case 'special':
			// NOTHING
			break;
		default:
			if (LAYOUT.lastDimensions != getViewport.Height() + '.' + getViewport.Width()) {
				LAYOUT.lastDimensions = getViewport.Height() + '.' + getViewport.Width()
				LAYOUT.CurrentColumn = 0;
				LAYOUT.Columns = 0;
				LAYOUT.ColumnStartPosition = 0;
				LAYOUT.ScrollLastPosition = 0;
				LAYOUT.BuildColumnLayout();
				iPOP.Init();
			}
			break;
	}
	TOOLTIP.Init();
	PAGE.CheckForOversize();
	return;
};
LAYOUT.ForceReset = function() {
	switch (PAGE.LayoutMode) {
		case 'table':
			//LAYOUT.BuildTableLayout();
			break;
		case 'special':
			break;
		default:
			LAYOUT.CurrentColumn = 0;
			LAYOUT.Columns = 0;
			LAYOUT.ColumnStartPosition = 0;
			LAYOUT.ScrollLastPosition = 0;
			LAYOUT.BuildColumnLayout();
			iPOP.Init();
			break;
	}
	TOOLTIP.Init();
	PAGE.CheckForOversize();
	return;
};



//------------------------------------------------------------------
//## MENU
//------------------------------------------------------------------
MENU.Init = function() {

	if (PAGE.RenderMode == 'static') return;
	this.Menu = $('menu');
	this.MenuTabs = $('menutabs');
	this.Submenu = $('submenu');
	this.CurrentActiveTab = null;
	this.LinkType = null;
	this.LinkId = null;
	this.CheckBoxes = 0;
	this.Cover = null;
	this.DownloadItems = 0;
	this.Mp3DefaultSize = 382;

	var menuButton = DOM.Create('A', '', 'menubutton');
	menuButton.innerHTML = TRANSLATE.GetValue('menu');
	DOM.SetAttribute(menuButton, 'HREF', 'javascript:;');
	EVENT.Add(menuButton, 'click', MENU.ShowHide);
	DOM.Add(menuButton, document.getElementsByTagName('BODY')[0]);

	EVENT.Add($('content'), 'click', MENU.Hide);

	if (DOM.ChildNodes($('menuoptions').getElementsByTagName('UL')[0])[5]) {
		DOM.ChildNodes($('menuoptions').getElementsByTagName('UL')[0])[5].style.marginRight = '0';
	}

	//MENU.Show()

};
MENU.InitMenuTabs = function() {
	if (PAGE.RenderMode == 'static') return;
	if (MENU.MenuTabs) return;

	MENU.MenuTabs = DOM.Create('DIV', '', 'menutabs');
	var ul = DOM.Create('UL', '', '');

	//## CLOSE BUTTON
	var closeButtonText = TEXTHANDLER.Close;
	var closeButton = DOM.Create('A', 'close-button', '');
	DOM.SetAttribute(closeButton, 'TITLE', TEXTHANDLER.Close);
	DOM.SetAttribute(closeButton, 'HREF', 'javascript:;');
	closeButton.innerHTML = '<span>' + TEXTHANDLER.Close + '</span>';
	EVENT.Add(closeButton, 'click', MENU.Hide);


	//## MENU ITEMS ['NAME','CLASSNAME','ID']
	var menuItems = [
		[TEXTHANDLER.TabNavigation, '', 'navigation']
		//, [TEXTHANDLER.TabSearchResults, 'tablinksearch', 'tablinksearch']
		, [TEXTHANDLER.TabDownloadPdf, 'checkboxes', 'download-pdf']
		, [TEXTHANDLER.TabVisitedPages, 'tabvisitedpages', 'tabvisitedpages']
	];

	//## CREATE MENU STRUCTURE
	for (var i = 0, n = menuItems.length, item = null, itemClass = null; i < n; i++) {
		item = menuItems[i][0];
		itemClass = menuItems[i][1];
		itemId = menuItems[i][2];
		var li = DOM.Create('LI', '', '');
		if (i == n-1) li.className = 'last';
		var link = DOM.Create('A', '', '');
		DOM.SetAttribute(link, 'HREF', 'javascript:;');
		DOM.SetAttribute(link, 'TITLE', item);
		if (itemId) DOM.SetAttribute(link, 'ID', itemId);
		if (itemClass) DOM.SetAttribute(link, 'CLASS', itemClass);
		if (i == 0) {
			DOM.SetAttribute(li, 'CLASS', 'selected');
			MENU.CurrentActiveTab = li;
		}
		EVENT.Add(link, 'click', MENU.OpenTab);
		link.innerHTML = item;
		DOM.Add(link, li);
		DOM.Add(li, ul);
	}

	//## INIT SEARCHFORM 
	var searchDiv = DOM.Create('DIV', '', 'menu-searchform');
	var searchResultText = DOM.Create('DIV', '', 'menu-searchresult');
	searchResultText.innerHTML = "";
	DOM.Add(searchResultText, searchDiv);
	var searchResultNav = DOM.Create('DIV', '', 'menu-searchresultNav');
	//searchResultNav.style.display='none';

	//## BUTTON
	var navPSpan = DOM.Create('span', '', '');
	DOM.SetAttribute(navPSpan, 'class', 'nav-button');
	var navPSpan2 = DOM.Create('span', '', '');
	var em = DOM.Create('em', '', '');
	DOM.SetAttribute(em, 'class', 'left');
	em.innerHTML = '&nbsp;';
	DOM.Add(em, navPSpan2);
	var btnP = DOM.Create('input', '', 'btn-nav-previous');
	DOM.SetAttribute(btnP, 'value', TEXTHANDLER.SearchNavigatePrevious);
	DOM.SetAttribute(btnP, 'type', 'button');
	EVENT.Add(btnP, 'click', SEARCHHANDLER.NavigateSearchResult);
	DOM.Add(btnP, navPSpan2);
	DOM.Add(navPSpan2, navPSpan);
	DOM.Add(navPSpan, searchResultNav);

	//## RIGHT BUTTON
	navPSpan = DOM.Create('span', '', '');
	DOM.SetAttribute(navPSpan, 'class', 'nav-button');
	navPSpan2 = DOM.Create('span', '', '');
	btnP = DOM.Create('input', '', 'btn-nav-next');
	DOM.SetAttribute(btnP, 'value', TEXTHANDLER.SearchNavigateNext);
	DOM.SetAttribute(btnP, 'type', 'button');
	EVENT.Add(btnP, 'click', SEARCHHANDLER.NavigateSearchResult);
	em = DOM.Create('em', '', '');
	DOM.SetAttribute(em, 'class', 'right');
	em.innerHTML = '&nbsp;';
	DOM.Add(em, navPSpan2);
	DOM.Add(btnP, navPSpan2);
	DOM.Add(navPSpan2, navPSpan);
	DOM.Add(navPSpan, searchResultNav);

	DOM.Add(searchResultNav, searchDiv);

	//## INIT DOWNLOAD VISITED PAGES RESET BUTTON
	var wrapper = DOM.Create('DIV', '', 'resetvisitedpages');
	var spanContainer = DOM.Create('span', 'button', '');
	var spanInner = DOM.Create('span', '', '');

	var btnVisitedPages = DOM.Create('input', '', 'resetvisitedpagesbtn');
	btnVisitedPages.setAttribute('type', 'button');
	btnVisitedPages.setAttribute('class', 'button');
	btnVisitedPages.setAttribute('value', TEXTHANDLER.VisitedPagesButton);
	EVENT.Add(btnVisitedPages, 'click', VISITEDPAGESHANDLER.ResetVisitedPages);
	DOM.Add(btnVisitedPages, spanInner);
	DOM.Add(spanInner, spanContainer);
	DOM.Add(spanContainer, wrapper);

	//## INIT CHECKBOXES
	MENU.InitCheckboxes();

	//## OUTPUT
	//DOM.Add(closeButton, MENU.MenuTabs);
	DOM.Add(ul, MENU.MenuTabs);
	DOM.Add(searchDiv, $('menuoptions'));
	DOM.Add(wrapper, $('menuoptions'));
	MENU.Menu.insertBefore(MENU.MenuTabs, MENU.Menu.firstChild);
};
MENU.InitCover = function() {
	if (PAGE.RenderMode == 'static') return;
	if (MENU.Cover) return;
	MENU.Cover = DOM.Create('DIV', '', 'cover');
	MENU.Cover.style.height = document.documentElement.clientHeight + 'px';
	setOpacity(MENU.Cover, 75);
	DOM.Add(MENU.Cover, document.getElementsByTagName('body')[0]);
	EVENT.Add(MENU.Cover, 'click', MENU.Hide);
};
MENU.ShowHide = function() {
	if (MENU.Menu.style.display == 'block') {
		MENU.Hide();
	} else {
		MENU.Show();
	}
};
MENU.Show = function() {
	iPOP.Close();
	PAGE.HideFlashArea();
	MENU.InitCover()
	MENU.InitMenuTabs();
	MENU.Cover.style.display = 'block';
	MENU.Menu.style.display = 'block';
	MENU.MenuTabs.style.display = 'block';
	MENU.OpenTab('navigation');
	$('menubutton').blur();
};
MENU.Hide = function() {
	PAGE.ShowFlashArea();
	if (MENU.Menu) MENU.Menu.style.display = 'none';
	if (MENU.MenuTabs) MENU.MenuTabs.style.display = 'none';
	if (MENU.Cover) MENU.Cover.style.display = 'none';
	$('menubutton').className = $('menubutton').className.replace('active', '');
	$('menubutton').blur();
};
MENU.OpenTab = function(tabId) {
	$('menubutton').className = 'active';

	//CLOSE ALL OPEN TOOLTIPS 
	var els = MENU.Menu.getElementsByTagName('div');
	for (var i = 0, iLen = els.length; i < iLen; i++) {
		if (els[i] && els[i].className == 'tooltip') {
			els[i].style.display = 'none';
		}
	}

	if (MENU.CurrentActiveTab) {
		MENU.CurrentActiveTab.className = '';
	}
	if (tabId && $(tabId)) {
		MENU.CurrentActiveTab = $(tabId).parentNode;
		MENU.LinkType = tabId;
	} else {
		MENU.CurrentActiveTab = this.parentNode;
		MENU.LinkType = this.className;
	}
	MENU.CurrentActiveTab.className = 'selected';
	MENU.LinkId = this.id;
	if (MENU.LinkType) {
		MENU.Menu.className = MENU.LinkType;
		if (MENU.LinkType == 'checkboxes') {
			MENU.InitDownloadFunction();
		}
	} else {
		MENU.Menu.className = '';
		MENU.Menu.removeAttribute('CLASS');
	}
	$('tryckord').style.display = 'none';
	$('menuadditions').style.display = 'none';
	$('menu-searchform').style.display = 'none';
	$('resetvisitedpages').style.display = 'none';
	switch (MENU.CurrentActiveTab.getElementsByTagName('a')[0].id) {
		case 'navigation':
			$('tryckord').style.display = 'block';
			break;
		case 'download-pdf':
			$('menuadditions').style.display = 'block';
			break;
		case 'download-mp3':
			$('menuadditions').style.display = 'block';
			break;
		case 'tabvisitedpages':
			$('resetvisitedpages').style.display = 'block';
			//## COOKIE WITH VISITED PAGES DATA
			var visitedPages = (COOKIE.Read('visitedpages')) ? COOKIE.Read('visitedpages') : '';
			var li = $('menu').getElementsByTagName('li');
			for (var i = 0, iLen = li.length; i < iLen; i++) {
				if (li[i].getElementsByTagName('ul').length < 1) { //## MAKE SURE THIS IS BOTTOM LI IN HIEARARCHY				
					var ahref = li[i].getElementsByTagName('a')[0]; //## OBS!! JUST THE FIRST A HREF IN LIST ELEMENT IS CHECKED
					if (visitedPages.indexOf(ahref) > -1 && li[i].className.indexOf('visited') == -1) {
						li[i].className += ' visited';
					}
				}
			}
			break;
		case 'tablinksearch':
			var buttons = DOM.GetByClassName($('menu-searchresultNav'), 'span', 'nav-button');
			for (var i = 0, iLen = buttons.length; i < iLen; i++) {
				buttons[i].style.display = 'block';
			}
			$('menu-searchform').style.display = 'block';
			break;
	}
};
MENU.InitCheckboxes = function() {
	if (PAGE.RenderMode == 'static') return;
	//## OUTPUT CHECKBOXES
	var li = $('menuoptions').getElementsByTagName('li');
	for (var i = 0, n = li.length; i < n; i++) {
		if (li[i].className != 'lastmenuitem') {
			var linkRel = DOM.GetAttribute(li[i].getElementsByTagName('A')[0], 'rel');
				var chSpan = DOM.Create('span', 'checkbox', '');
				var ch = DOM.Create('input');
				DOM.SetAttribute(ch, 'TYPE', 'checkbox');
				DOM.SetAttribute(ch, 'VALUE', li[i].firstChild.innerHTML);
				if (typeof li[i].firstChild.tagName == 'undefined') {
					DOM.SetAttribute(ch, 'CLASS', 'group');
				}
				DOM.Add(ch, chSpan);
				EVENT.Add(chSpan, 'click', MENU.CheckboxFunctions);
				li[i].insertBefore(chSpan, li[i].firstChild);
		}
	}

	//## DOWNLOAD FUNCTIONS
	var downloadActionContainer = DOM.Create('DIV', '', 'download-action-container');
	DOM.Add(DOM.Create('DIV', '', 'download-action-text'), downloadActionContainer);

	var spanContainer = DOM.Create('span', 'button', '');
	var spanInner = DOM.Create('span', '', '');
	var btn = DOM.Create('input', '', 'download-action-button');
	btn.setAttribute('type', 'button');
	btn.setAttribute('class', 'button');
	btn.setAttribute('value', '');
	DOM.Add(btn, spanInner);
	DOM.Add(spanInner, spanContainer);
	DOM.Add(spanContainer, downloadActionContainer);
	if ($('menuadditions')) DOM.Add(downloadActionContainer, $('menuadditions'));
	$('download-action-text').style.display = 'none';

	var count = 0;
	var links = $('menu').getElementsByTagName('A');
	for (var i = 0, n = links.length; i < n; i++) {
		var link = links[i];
		var linkRel = parseInt(DOM.GetAttribute(link, 'rel'));
		if (linkRel) {
			count = parseInt(count + linkRel);
		}
	}
	MENU.DownloadItems = count;

};
MENU.CheckboxFunctions = function() {
	if (PAGE.RenderMode == 'static') return;
	var checkbox = this.getElementsByTagName('input')[0];
	if (!checkbox.checked) {
		this.className = this.className + '  checked';
		checkbox.checked = true;
	} else {
		this.className = this.className.replace('checked', '');
		checkbox.checked = false;
	}

	//## CHECKBOX GROUP LEADER	
	if (checkbox.className == 'group') {
		var isGroupLeaderChecked = checkbox.checked;
		var boxes = checkbox.parentNode.parentNode.getElementsByTagName('INPUT');
		var nextSib = DOM.NextSibling(checkbox.parentNode.parentNode);
		if (nextSib && nextSib.className == 'lastmenuitem') {
			var arr = boxes;
			var boxes = [];
			for (var i = 0, n = arr.length; i < n; i++) {
				boxes.push(arr[i]);
			}
			var arr2 = DOM.NextSibling(checkbox.parentNode.parentNode).getElementsByTagName('INPUT');
			for (var i = 0, n = arr2.length; i < n; i++) {
				if (arr2[i].parentNode.parentNode && arr2[i].parentNode.parentNode.className != 'hidden') {
					boxes.push(arr2[i]);
				}
			}
		}
		var n = boxes.length;
		for (var i = 0, box = null; i < n; i++) {
			box = boxes[i];
			if (isGroupLeaderChecked) {
				box.parentNode.className = 'checkbox checked';
				box.checked = true;
			} else {
				box.checked = false;
				box.parentNode.className = 'checkbox';
			}
		}
	} else {
		checkboxGroupleader = checkbox.parentNode;
		while (checkboxGroupleader.getElementsByTagName('INPUT')[0].className != 'group') {
			checkboxGroupleader = checkboxGroupleader.parentNode;
		}
		var GroupLeader = checkboxGroupleader;
		if (GroupLeader.checked) GroupLeader.checked = false;
	}

	//## COUNT ALL CHECKED BOXES
	var boxes = $('menuoptions').getElementsByTagName('input');
	var n = boxes.length, z = 0, pdfpages = 0;
	for (var i = 0, box = null; i < n; i++) {
		box = boxes[i];
		if (box.checked == true) {
			if (box.className != 'group') {
				var aTag = box.parentNode.parentNode.getElementsByTagName('A')[0];
				if (aTag) {
					var linkRel = parseInt(DOM.GetAttribute(aTag, 'rel'));
					if (linkRel) {
						pdfpages = parseInt(pdfpages + linkRel);
					}
				}
			}
		}
	}

	var downloadActionText = $('download-action-text');
	var downloadActionButton = $('download-action-button');
	switch (MENU.LinkId) {
		case 'download-pdf':
			//## ENABLE PDF DOWNLOAD
			downloadActionText.innerHTML = TEXTHANDLER.DownloadPdfPages + ' ' + pdfpages + ' (' + TEXTHANDLER.DownloadPdfPagesOutOf + ' ' + MENU.DownloadItems + ')';
			downloadActionButton.value = TEXTHANDLER.DownloadPdfText;
			EVENT.Add(downloadActionButton, 'click', PDFExporter);
			break;
		case 'download-mp3':
			//## ENABLE MP3 DOWNLOAD
			MENU.Mp3DefaultSize += MENU.Mp3DefaultSize;
			if (MENU.Mp3DefaultSize > 1024) {
				downloadActionText.innerHTML = TEXTHANDLER.DownloadMp3Size + (MENU.Mp3DefaultSize / 1024).toPrecision(3) + ' Mb';
			} else {
				downloadActionText.innerHTML = TEXTHANDLER.DownloadMp3Size + MENU.Mp3DefaultSize + ' Kb';
			}
			downloadActionButton.value = TEXTHANDLER.DownloadMp3Text;
			EVENT.Add(downloadActionButton, 'click', PDFExporter);
			break;
	}

};
MENU.InitDownloadFunction = function(FileType) {
	if (PAGE.RenderMode == 'static') return;
	var downloadActionText = $('download-action-text');
	var downloadActionButton = $('download-action-button');

	var spans = DOM.GetByClassName($('menu'), 'span', 'checkbox');
	for (var i = 0, n = spans.length; i < n; i++) {
		spans[i].style.visibility = 'visible';
	}
	switch (MENU.LinkId) {
		case 'download-pdf':
			//## ENABLE PDF DOWNLOAD
			if (downloadActionButton) {
				downloadActionText.innerHTML = TEXTHANDLER.DownloadPdfPages + ' 0 (' + TEXTHANDLER.DownloadPdfPagesOutOf + ' ' + MENU.DownloadItems + ')';
				downloadActionButton.value = TEXTHANDLER.DownloadPdfText;
				EVENT.Add(downloadActionButton, 'click', PDFExporter);
			}
			break;
		case 'download-mp3':
			//## ENABLE MP3 DOWNLOAD
			if (downloadActionText) {
				downloadActionText.innerHTML = TEXTHANDLER.DownloadMp3Size + ' 0 Kb';
				downloadActionButton.value = TEXTHANDLER.DownloadMp3Text;
			}
			break;
	}
};
MENU.InitSubmenu = function() {
	if (PAGE.RenderMode == 'static') return;
	var toggler = DOM.Create('DIV', '', 'submenu-toggler');
	toggler.innerHTML = TRANSLATE.GetValue('OpenNoteMenu');
	toggler.style.cursor = 'pointer';
	DOM.SetAttribute(toggler, 'title', TRANSLATE.GetValue('OpenNoteMenu'));
	EVENT.Add(toggler, 'click', MENU.Submenu_Toggle);
	DOM.Add(toggler, $('content'));
	MENU.Submenu.style.display = 'none';
};
MENU.Submenu_Toggle = function() {
	MENU.Submenu.style.display = (MENU.Submenu.style.display == 'none') ? 'block' : 'none';
	switch (MENU.Submenu.style.display) {
		case 'block':
			$('submenu-toggler').className = 'close';
			$('submenu-toggler').innerHTML = TRANSLATE.GetValue('CloseNoteMenu');
			DOM.SetAttribute($('submenu-toggler'), 'title', TRANSLATE.GetValue('CloseNoteMenu'));
			break;
		default:
			$('submenu-toggler').className = 'open';
			$('submenu-toggler').innerHTML = TRANSLATE.GetValue('OpenNoteMenu');
			DOM.SetAttribute($('submenu-toggler'), 'title', TRANSLATE.GetValue('OpenNoteMenu'));
			break;
	}
};


/* TOOLTIP
----------------------------------------------------*/
TOOLTIP.Init = function() {
	if (PAGE.RenderMode == 'static') return;
	this.Tooltip = null;
	this.Title = '';
	this.Rel = '';
	var tooltips = DOM.GetByClassName(document, '*', 'tooltip');
	for (var i = 0, n = tooltips.length, tooltip = null; i < n; i++) {
		tooltip = tooltips[i];
		if (DOM.GetAttribute(tooltip, 'title')) {
			EVENT.Add(tooltip, 'mouseover', TOOLTIP.Display);
		}
	}

};
TOOLTIP.Display = function(e) {
	TOOLTIP.Title = DOM.GetAttribute(this, 'title');
	if (!TOOLTIP.Title) TOOLTIP.Title = this.title;
	if (!TOOLTIP.Title) return;
	DOM.SetAttribute(this, 'rel', TOOLTIP.Title);
	DOM.SetAttribute(this, 'title', '');
	TOOLTIP.Tooltip = $('tooltip-container');
	if (!TOOLTIP.Tooltip) {
		TOOLTIP.Tooltip = DOM.Create('div', '', 'tooltip-container');
		DOM.Add(TOOLTIP.Tooltip, document.getElementsByTagName('body')[0]);
	} else {
		TOOLTIP.Tooltip.style.display = 'block';
	}
	if (document.all) { x = event.clientX + document.body.scrollLeft; y = event.clientY + document.documentElement.scrollTop; } else { x = e.pageX; y = e.pageY; }
	if (x < 0) { x = -5000; }
	if (y < 0) { y = -5000; }
	TOOLTIP.Tooltip.className = '';
	TOOLTIP.Tooltip.style.left = (x) + 'px';
	TOOLTIP.Tooltip.style.top = (y + 5) + 'px';
	TOOLTIP.Tooltip.id = 'tooltip-container';
	TOOLTIP.Tooltip.zIndex = 10000;
	TOOLTIP.Tooltip.innerHTML = '<em>' + TOOLTIP.Title + '</em>';
	EVENT.Add(this, 'mouseout', TOOLTIP.Hide);

	if (parseInt(y + 130) > getViewport.Height()) {
		TOOLTIP.Tooltip.style.top = (y - TOOLTIP.Tooltip.clientHeight - 5) + 'px';
		TOOLTIP.Tooltip.className = 'rev';
	}

};
TOOLTIP.Hide = function() {
	if (!TOOLTIP.Tooltip) TOOLTIP.Tooltip = $('tooltip-container');
	TOOLTIP.Tooltip.innerHTML = '';
	DOM.SetAttribute(this, 'title', TOOLTIP.Title);
	DOM.SetAttribute(this, 'rel', '');
	TOOLTIP.Tooltip.style.display = 'none';
};


/* PDF EXPORTER
----------------------------------------------------*/
var PDFExporter = function(e) {
	var boxes = $('menuoptions').getElementsByTagName('input');
	var n = boxes.length, z = 0;
	url = "http://hhxen0103.halvarsson.se/getpdf.aspx?company=Lagercrantz_" + TRANSLATE.Lang + "&p=";
	for (var i = 0, box = null; i < n; i++) {
		box = boxes[i];
		if (box.className !== 'group') {
			if (box.checked == true) {
				url = url + "t";
			}
			url = url + ",";
		}
	}
	document.location = url;
};



//------------------------------------------------------------------
//------------------------------------------------------------------
//## SEARCH
//------------------------------------------------------------------

SEARCHHANDLER.Init = function() {
	if (PAGE.RenderMode == 'dynamic') {
		SEARCHHANDLER.ClassNameForHightlightedListItems = 'highlight';
		SEARCHHANDLER.CurrentActiveSearchResult = 1;
		SEARCHHANDLER.Index = new Array();
		SEARCHHANDLER.Results = new Array();
		SEARCHHANDLER.LastSearchTerm = "";
		SEARCHHANDLER.Scope = 1;
		EVENT.Add($('btnSearch'), 'click', SEARCHHANDLER.SearchForm);
		EVENT.Add($('tbSearchBox'), 'keyup', SEARCHHANDLER.SearchForm);
		SEARCHHANDLER.InitIndex();
	}
};

//go through array and create index obj.
SEARCHHANDLER.InitIndex = function() {
	for (var i = 0; i < sData.length; i++) {
		SEARCHHANDLER.Index[i] = new SEARCHINDEXITEM(sData[i]);
	}
}

SEARCHHANDLER.SearchForm = function(e) {
	SEARCHHANDLER.HandleEvent(e);
	SEARCHHANDLER.LastSearchTerm = unescape(tb.value);
	if (SEARCHHANDLER.LastSearchTerm.length == 0) return;

	SEARCHHANDLER.SearchingQuote = false;
	if (SEARCHHANDLER.LastSearchTerm.charAt(0) == '"' && SEARCHHANDLER.LastSearchTerm.charAt(SEARCHHANDLER.LastSearchTerm.length - 1) == '"') {
		SEARCHHANDLER.SearchingQuote = true;
		SEARCHHANDLER.SearchQuote();
	} else {
		SEARCHHANDLER.SearchWords();
	}

	var hits = SEARCHHANDLER.Results.length;

	SEARCHHANDLER.PrintResult(hits);

	if (typeof sC == "object" && typeof sC.hhLogSearch == "function") {
		sC.hhLogSearch(SEARCHHANDLER.LastSearchTerm, hits);
	}

	return false;
}

SEARCHHANDLER.SearchQuote = function() {
	var d = SEARCHHANDLER.LastSearchTerm.replace(/"/gi, "");
	var pat = new RegExp(d, "i");
	for (var c = 0, n = SEARCHHANDLER.Index.length; c < n; c++) {
		var CurrentIndex = SEARCHHANDLER.Index[c];
		CurrentIndex.Score = 0;
		var rn = CurrentIndex.Text.search(pat);
		if (rn >= 0) {
			// && SEARCHHANDLER.IsInScope(CurrentIndex, filterType)
			CurrentIndex.Score += 1;
		}
	}
}

SEARCHHANDLER.SearchWords = function() {
	//setup search terms
	var searchterms = new Array();
	var words = SEARCHHANDLER.LastSearchTerm.split(" ");
	for (var a = 0, n = words.length; a < n; a++) {
		searchterms[a] = new SEARCHTERM(words[a]);
	}

	SEARCHHANDLER.Results = new Array();

	//Search through index
	for (var IndexIterator = 0, n = SEARCHHANDLER.Index.length; IndexIterator < n; IndexIterator++) {

		//reset index hit score.
		var CurrentIndex = SEARCHHANDLER.Index[IndexIterator];
		CurrentIndex.Score = 0;
		for (var i = 0, nn = searchterms.length; i < nn; i++) {
			var CurrentTerm = searchterms[i];
			if (!CurrentTerm.Exclude) {
				var findTerm = new RegExp(CurrentTerm.Text, "i");

				var headingFound = CurrentIndex.Title.search(findTerm); //search heading
				if (headingFound >= 0) {
					CurrentIndex.Score += 10; //if term found in page title, add 10 to score
				}

				var rn = CurrentIndex.Text.match(findTerm);
				if (rn && rn.length > 0) {
					CurrentIndex.Score += rn.length; //add numner of matches to score.
				}
			} else {
				var findTerm = new RegExp(CurrentTerm.Text, "i");
				var rn = CurrentIndex.Text.match(findTerm);
				if (rn && rn.length > 0) {
					CurrentIndex.Score = -1000; //result page excluded.
				}
			}
		}

		if (CurrentIndex.Score > 0 && SEARCHHANDLER.IsInScope(CurrentIndex, SEARCHHANDLER.Scope)) {
			SEARCHHANDLER.Results[SEARCHHANDLER.Results.length] = CurrentIndex;
		}
	}
	SEARCHHANDLER.SortSearchResult();
}

SEARCHHANDLER.HandleEvent = function(e) {
	var trigger = (typeof e.target !== 'undefined') ? e.target : e.srcElement;
	CancelEvent(e);
	if (trigger.type == 'button') {
		if (trigger.id == 'btnSearch') {
			tb = $('tbSearchBox');
		} else {
			tb = $('tbSearchBoxInMenu');
		}
	} else if (trigger.type == 'submit') {
		tb = $('tbSearchBox');
	} else {
		tb = trigger;
	}
}



SEARCHHANDLER.IsInScope = function(row, type) {
	//## TYPE: 1=ALL, 2=SECTION, 3=PAGE
	if (type == 1) return true; //if 1, always return true(filter off)
	var section = "";
	var page = "";
	var url = window.location.toString();
	var aUrl = url.split("/");
	section = aUrl[aUrl.length - 2];
	if (type == 3) {
		page = aUrl[aUrl.length - 1];
		page = page.substring(0, page.indexOf("."));
		return row.BreadCrumb == (section + "/" + page);
	}

	if (row.BreadCrumb.indexOf(section) > 0) {
		return true;
	} else {
		if (page == "" || page == aRow[5]) return true;
		else {
			return false;
		}
	}
};
SEARCHHANDLER.PrintResult = function(hits) {

	if ($('resultPanel')) DOM.Remove($('resultPanel'));

	var resultPanel = DOM.Create('div', '', 'resultPanel');
	resultPanel.style.left = $('searchform').offsetLeft + 'px';
	var resultTopic = DOM.Create('strong');
	var resultContainer = DOM.Create('div');
	DOM.Add(resultTopic, resultPanel);
	DOM.Add(resultContainer, resultPanel);
	DOM.Add(resultPanel, document.getElementsByTagName('BODY')[0]);

	if (hits == 0) {
		resultTopic.innerHTML = TRANSLATE.GetValue('SearchEmpty');
	} else {
		var strOutput = TRANSLATE.GetValue('Searchresult');
		strOutput = strOutput.replace('{SEARCHWORD}', SEARCHHANDLER.LastSearchTerm);
		strOutput = strOutput.replace('{RESULTS} on', '');
		strOutput = strOutput.replace('{RESULTS} på', '');
		strOutput = strOutput.replace('{RESULTS}', '');
		strOutput = strOutput.replace('{PAGES}', hits);
		resultTopic.innerHTML = strOutput;
		var ul = DOM.Create('ul');
		for (var i = 0, n = hits; i < n; i++) {
			var li = DOM.Create('li');
			li.innerHTML = '<a href="' + SEARCHHANDLER.Results[i].Url + '#' + escape(SEARCHHANDLER.LastSearchTerm) + '">' + SEARCHHANDLER.Results[i].Title + '</a>';
			DOM.Add(li, ul);
		}
		DOM.Add(ul, resultContainer);
		if (hits > 12) {
			resultContainer.style.height = '240px';
		}
	}
	return;

	/*

	OLD OLD OLD OLD OLD OLD

	var resultPanel = document.getElementById("resultPanel"); //namePrefix + 
	var ToolTipContainerClassName = 'tooltip';
	var resultHtml = "";
	var btnSearchPath = '../../gfx/searchfound.png';
	var btnSearchPathExpanded = '../../gfx/searchfound.png';
	var menuListElements = $('menuoptions').getElementsByTagName('li');
	var className = SEARCHHANDLER.ClassNameForHightlightedListItems;
	var classNameNoResult = 'faded';
	for (var i = 0, len = menuListElements.length; i < len; i++) { //reser result list
	menuListElements[i].className = menuListElements[i].className.replace(className, '');
	menuListElements[i].className = menuListElements[i].className.replace(classNameNoResult, '');
	menuListElements[i].className += ' ' + classNameNoResult;
	var images = menuListElements[i].getElementsByTagName('img');
	if (images.length > 0) {
	DOM.Remove(images[0]);
	}
	var tooltips = menuListElements[i].getElementsByTagName('div');
	for (var x = 0, xLen = tooltips.length; x < xLen; x++) {
	if (tooltips[x] && tooltips[x] != 'undefined' && tooltips[x].className == ToolTipContainerClassName)
	DOM.Remove(tooltips[x]);
	}
	}
	if (hits == 0) {
	MENU.Show();
	MENU.OpenTab('tablinksearch');
	standardSearchQuery = $('tbSearchBox').value;
	menuSearchQuery = $('tbSearchBoxInMenu').value;
	if (menuSearchQuery == '') {
	$('tbSearchBoxInMenu').value = standardSearchQuery;
	} else {
	if (menuSearchQuery !== SEARCHHANDLER.LastSearchTerm) {
	$('tbSearchBoxInMenu').value = SEARCHHANDLER.LastSearchTerm;
	}
	}
	$('menu-searchresult').innerHTML = "<strong>Your search did not match any documents.</strong><br />Make sure all keywords are spelt correctly. Try different or more general keywords.";
	} else {
	var pattern = SEARCHHANDLER.GetSearchPattern();
	var section = "";
	for (var elementCounter = 0, length = menuListElements.length; elementCounter < length; elementCounter++) {
	var aElement = menuListElements[elementCounter].getElementsByTagName('a');
	if (aElement.length == 1) {
	var currentMenuSection = aElement[0].innerHTML;
	for (var searchArraypos = 0, searchArrayLen = SEARCHHANDLER.Results.length; searchArraypos < searchArrayLen; searchArraypos++) {
	if (SEARCHHANDLER.Results[searchArraypos].BreadCrumb.indexOf(section + "/" + currentMenuSection) > -1 && SEARCHHANDLER.Results[searchArraypos].Score > 0) {
	var searchRowArrayPosTitle = 0, searchRowArrayPosText = 3;
	var ch = DOM.Create('img', '', '');
	ch.setAttribute('src', btnSearchPath);
	var posResult = SEARCHHANDLER.Results[searchArraypos].Text.search(pattern);
	if (posResult > -1) {
	ch.src = btnSearchPathExpanded;
	var tooltipTextPopup = DOM.Create('div', '', '');
	DOM.SetAttribute(tooltipTextPopup, 'class', ToolTipContainerClassName);
	tooltipTextPopup.style.display = 'none';
	var tooltipText = SEARCHHANDLER.Results[searchArraypos].Text.substr(posResult - 8, 120) + "...";
	tooltipTextPopup.innerHTML = '<span><span><span>' + tooltipText + '</span></span></span>';
	menuListElements[elementCounter].appendChild(tooltipTextPopup);
	EVENT.Add(aElement[0], 'mouseover', viewTooltipForMenuList);
	EVENT.Add(aElement[0], 'mouseout', hideTooltipForMenuList);
	}
	//menuListElements[elementCounter].insertBefore(ch, aElement[0]);
	DOM.AddBefore(ch, aElement[0]);
	menuListElements[elementCounter].className = menuListElements[elementCounter].className.replace(classNameNoResult, '');
	menuListElements[elementCounter].className = menuListElements[elementCounter].className + ' ' + className;
	var parentListElement = menuListElements[elementCounter].parentNode.parentNode;
	}
	}
	} else {
	//get section name
	if (menuListElements[elementCounter].firstChild.className == "checkbox")
	section = menuListElements[elementCounter].firstChild.nextSibling.innerHTML;
	else
	section = menuListElements[elementCounter].firstChild.innerHTML;
	}
	}
	}
	if (hits > 0) {
	MENU.Show();
	MENU.OpenTab('tablinksearch');
	$('menu-searchresultNav').style.display = 'block';
	$('menu-searchresult').innerHTML = 'Looking for "<em>' + SEARCHHANDLER.LastSearchTerm + '</em>"<br />Results: ' + hits + ' pages';
	}
	return;
	
	*/
};
SEARCHHANDLER.SortSearchResult = function() {
	var newResultArray = new Array();
	for (var pageIterator = 0, max = SEARCHHANDLER.Results.length; pageIterator < max; pageIterator++) {
		var maxScore = 0;
		var scorePos = 0;
		for (var scoreIterator = 0, n = SEARCHHANDLER.Results.length; scoreIterator < n; scoreIterator++) {
			if (SEARCHHANDLER.Results[scoreIterator].Score > maxScore) {
				maxScore = SEARCHHANDLER.Results[scoreIterator].Score;
				scorePos = scoreIterator;
			}
		}
		newResultArray[pageIterator] = SEARCHHANDLER.Results[scorePos];
		SEARCHHANDLER.Results[scorePos] = -1;
	}
	SEARCHHANDLER.Results = newResultArray;
};
SEARCHHANDLER.GetSearchPattern = function() {
	if (!this.SearchingQuote) {
		var criteria = SEARCHHANDLER.LastSearchTerm.split(" ")[0];
		return new RegExp(criteria, "i");
	} else {
		var l = SEARCHHANDLER.LastSearchTerm.replace(/"/gi, "");
		return new RegExp(l, "i");
	}
};

SEARCHINDEXITEM = function(data) {
	//title, url, breadcrumb, textmassa
	var splitRow = data.split("^");
	this.Title = splitRow[0];
	this.Url = splitRow[1];
	this.BreadCrumb = splitRow[2];
	this.Text = splitRow[3];
	this.Score = 0;
}

SEARCHTERM = function(data) {
	this.Exclude = false;
	if (data.charAt(0) == '-') this.Exclude = true;
	this.Text = data.replace(/^\-|^\+/gi, ""); //remove starting -+
}
SEARCHHANDLER.InputOnFocus = function(e) {
	if (this.value == 'Sök' || this.value == 'Search' || this.value == 'Cerca') {
		this.value = '';
	}
};
SEARCHHANDLER.InputOnBlur = function(e) {
	if (this.value == '') {
		switch (TRANSLATE.Lang) {
			case 'sv':this.value = 'Sök';break;
			case 'en':this.value = 'Search';break;
			case 'it':this.value = 'Cerca';break;
			default:this.value = 'Search';break;
		}
	}
};




var viewTooltipForMenuList = function(e) {
	var startElement = this.parentNode;
	if (startElement.parentNode.parentNode.parentNode.parentNode.parentNode.className == 'tablinksearch' && startElement.className.indexOf(SEARCHHANDLER.ClassNameForHightlightedListItems) > -1) {
		startElement.getElementsByTagName('DIV')[0].style.display = 'block';
		//startElement.getElementsByTagName('div')[0].className = 'tooltip';
		//viewTooltip(1, startElement)
	}
}
var hideTooltipForMenuList = function(e) {
	var startElement = this.parentNode;
	if (startElement.className.indexOf(SEARCHHANDLER.ClassNameForHightlightedListItems) > -1) {
		viewTooltip(0, startElement)
	}
}

//view: 1 = view, view: 0 = hide 
function viewTooltip(view, startElement){
	var toolTipElements = startElement.getElementsByTagName('div');
    for (var i=0,iLen=toolTipElements.length;i<iLen;i++){
        if(toolTipElements[i].className == 'tooltip') {
        	if (view) {
        		toolTipElements[i].style.display = 'block';
        	} else {
        		toolTipElements[i].style.display = 'none';
        	}
        }
    }

}

currentFilter=1;
function filterButton(span, no, type){
	if(no != currentFilter){
		if(type == 'hover'){
			span.className='button';
		}else{
			span.className='button inactivebutton';
		}
	}
};



TRANSLATE.Lang = "en";
TRANSLATE.Dictionary = null;
TRANSLATE.Init = function() {
	if (typeof (dictionary) != "undefined") {
		TRANSLATE.Dictionary = dictionary;
		TRANSLATE.Lang = TRANSLATE.GetValue("lang");
	}
};
TRANSLATE.GetValue = function(key) {		
    if (TRANSLATE.Dictionary != null) {                
		var dictLength=TRANSLATE.Dictionary.length;
        for (var ix = 0; ix < dictLength; ix++) {
            if (TRANSLATE.Dictionary[ix][0] == key) {
                return TRANSLATE.Dictionary[ix][1];
            }
        }
    }
    return key;
};

function VisitedPagesHandler() {
	this.NumberOfSecondsBeforePageIsCountedAsVisited = 5;
	this.ResetVisitedPages = function() {
		if (confirm(TEXTHANDLER.ResetConfirm)) {
			var li = $('menu').getElementsByTagName('li');
			for (var i = 0, iLen = li.length; i < iLen; i++) {
				li[i].className = li[i].className.replace('visited', '');
			}
			COOKIE.Create('visitedpages', '', '365');
		}
	}
	this.InitializeVisitedLinks = function() {
		var documentName = document.location;
		setTimeout(this.SetPageAsVisited, this.NumberOfSecondsBeforePageIsCountedAsVisited * 1000);
	}
	this.SetPageAsVisited = function() {
		var cookieNameVisitedPages = 'visitedpages';
		var visitedPages = COOKIE.Read(cookieNameVisitedPages);
		if (visitedPages != null) {
			visitedPages = visitedPages + '|'; //SEPARATOR OF URLS	
		} else {
			visitedPages = "";
		}
		if (visitedPages.indexOf(document.location) == -1) {
			visitedPages = visitedPages + document.location;
			COOKIE.Create(cookieNameVisitedPages, visitedPages, '365');
		}
	}
};

function StringHandler() {
	this.GetCleanInput = function(str) {
		return str;
	}
	this.CharReplaceArray = new Array(
		new Array('\%', '%25'),
		new Array('\n', '{lf}'),
		new Array('\'', '{´}'),
		new Array('&', '%26'),
		new Array(' ', '%20'),
		new Array('\$', '%24'),
		new Array('\+', '%2B'),
		new Array('\?', '%3F'),
		new Array('"', '%22'),
		new Array('\<', '%3C'),
		new Array('\>', '%3E'),
		new Array('\#', '%23'),
		new Array('|', '%7C')
	);
	this.Encode = function(str) {
		return this.EncodeDecode(str, 1);
	}
	this.Decode = function(str) {
		return this.EncodeDecode(str, 0);
	}
	this.EncodeDecode = function(str, encode) {
		if (str == null)
			return str;
		var source = 1, replacement = 0;
		if (encode) {
			source = 0;
			replacement = 1;
		}
		for (var i = 0, iLen = this.CharReplaceArray.length; i < iLen; i++) {
			var strArr = str.toString().split(this.CharReplaceArray[i][source]);
			var newstring = '';
			for (var x = 0, xLen = strArr.length; x < xLen; x++) {
				if (xLen > 1) {
					newstring += strArr[x];
					if (x < xLen - 1) {
						newstring += this.CharReplaceArray[i][replacement];
					}
				} else {
					newstring = str;
				}
			}
			str = newstring;
		}
		return str;
	}
	this.ToHtml = function(str) {
		str = str.replace(/\n/g, '<br />');
		return str;
	}
	this.Trim = function(sString) {
		var arr = new Array('	', '\n', '\r', '			', ' ');
		if (!sString)
			return '';
		sString = sString.toString();
		while (arr.exists(sString.substring(0, 1))) {
			sString = sString.substring(1, sString.length);
		}
		while (arr.exists(sString.substring(sString.length - 1, sString.length))) {
			sString = sString.substring(0, sString.length - 1);
		}
		return sString;
	}
};
function InputOutput() {
	this.Alert = function(str) {
		if ($('alert')) return;
		var cover = document.createElement('div');
		cover.id = 'alertcover';
		cover.className = 'cover';
		cover.style.height = '1000px';
		cover.style.width = '2000px';
		cover.style.display = 'block';
		cover.style.zIndex = 100;
		setOpacity(cover, 75);
		document.body.appendChild(cover);
		var p = new POPUP();
		p.Width = 300;
		p.Height = 140;
		p.Id = 'alert';
		p.BodyText = str;
		p.CurrentXPos = parseInt(document.body.offsetWidth / 2) - parseInt(p.Width / 2);
		p.CurrentYPos = parseInt(document.body.offsetHeight / 2) - parseInt(p.Height / 2);
		p.Show();
		if (isIE) {
			$('alert').style.background = '#ccc';
		}
		$('alert').style.zIndex = 101;
		setTimeout('FadeElement("alert", 1000, 100, 0)', 3000);
		setTimeout('FadeElement("alertcover", 1000, 75, 0)', 3000);
	}
	this.Confirm = function(sr) {
		return confirm(sr);
	}
};


function TextHandler() {
	this.gv = function(val) { return TRANSLATE.GetValue(val) }
	this.TextWelcome = this.gv('Welcome');
	this.TextWelcomeBody = this.gv('WelcomeBody');
	this.TextWelcomeLinkMoreInfo = this.gv('WelcomeLinkMoreInfo');
	this.TextWelcomeLinkSignUp = this.gv('WelcomeLinkSignUp');
	this.TextWelcomeLinkHaveAccount = this.gv('WelcomeLinkHaveAccount');
	this.TextPopupClose = this.gv('Close');
	this.TextLoginHeader = this.gv('LoginHeader');
	this.TextLoginFieldEmail = this.gv('Email');
	this.TextLoginFieldPassword = this.gv('Password');
	this.TextLoginButtonLogin = this.gv('Login');
	this.TextLoginLinkNewUser = this.gv('NewUser');
	this.TextLoginLinkLostPassword = this.gv('LostPassword');
	this.TextSignUpFieldFullName = this.gv('FieldYourName');
	this.TextSignUpFieldYourEmail = this.gv('FieldYourEmail');
	this.TextSignUpFieldNewPassWord = this.gv('FieldNewPassword');
	this.TextSignUpFieldAccept = this.gv('TermsAccept');
	this.TextSignUpFieldAcceptEnd = this.gv('TermsAcceptEnd');
	this.TextSignUpSubmitButton = this.gv('BtnSignup');
	this.TextCollaborateHeader = this.gv('ColH');
	this.TextCollaborateBody = this.gv('ColB');
	this.TextCollaborateFieldEmailAddresses = this.gv('FieldFriends');
	this.TextCollaborateButtonInvite = this.gv('BtnInvite');
	this.TextCollaborateButtonSkip = this.gv('BtnSkip');
	this.TextCollaborateInviteSectionHeader = this.gv('InviteMore');
	this.TextCollaborateInviteSectionBody = this.gv('FieldFriends');
	this.TextCollaborateInviteSectionBtnText = this.gv('BtnInvite');
	this.TextCollaborateRemoveSectionHeader = this.gv('RemMembersH');
	this.TextCollaborateRemoveSectionBody = this.gv('RemMembersB');
	this.TextCollaborateRemoveSectionBtnText = this.gv('BtnRemove');
	this.TextInvitationSent = this.gv('SendingInvitations');
	this.TextResponseCreate = this.gv('ClickRespond');
	this.TextResponseDelete = this.gv('DeleteResponse');
	this.TextResponseSave = this.gv('SaveResponse');
	this.TextUpdateResponse = this.gv('UpdateResponse');
	this.TextDeleteConfirm = this.gv('ConfirmDelete');
	this.TextAnd = this.gv('And');
	this.ErrorAcceptTermsOfUse = this.gv('TermsOfUser');
	this.ErrorUserCreation = this.gv('ErrorRegistration');
	this.ErrorLogin = this.gv('ErrorLogin');

	//SEARCH MODULE
	this.SearchResult = this.gv('Searchresult');
	this.SearchButton = this.gv('BtnSearch');
	this.SearchNavigatePrevious = this.gv('BtnPrevious');
	this.SearchNavigateNext = this.gv('BtnNext');
	this.SearchNoMatch = this.gv('SearchEmpty');

	this.DownloadPdfText = this.gv('DownloadPdfText');
	this.DownloadPdfPages = this.gv('DownloadPdfPages');
	this.DownloadPdfPagesOutOf = this.gv('DownloadPdfPagesOutOf');

	this.DownloadMp3Text = this.gv('DownloadMp3Text');
	this.DownloadMp3Size = this.gv('DownloadMp3Size');

	this.DownloadEmfText = this.gv('DownloadEmfText');
	this.DownloadExcelText = this.gv('DownloadExcelText');

	this.ListenToPage = this.gv('ListenToPage');
	this.ListenToPageTitle = this.gv('ListenToPageTitle');

	this.TextSizeStandard = this.gv('TextSizeStandard');
	this.TextSizeStandardTitle = this.gv('TextSizeStandardTitle');

	this.TextSizeBig = this.gv('TextSizeBig');
	this.TextSizeBigTitle = this.gv('TextSizeBigTitle');

	this.RenderColumnLayout = this.gv('RenderColumnLayout');
	this.RenderColumnLayoutTitle = this.gv('RenderColumnLayoutTitle');

	this.RenderBasicLayout = this.gv('RenderBasicLayout');
	this.RenderBasicLayoutTitle = this.gv('RenderBasicLayoutTitle');

	this.Close = this.gv('Close');
	this.FinancialTableMultiViewTrigger = this.gv('FinancialTableMultiViewTrigger');
	this.MenuClose = this.gv('MenuClose');
	this.TabNavigation = this.gv('TabNavigation');
	this.TabSearchResults = this.gv('TabSearchResults');
	this.TabDownloadPdf = this.gv('TabDownloadPdf');
	this.TabDownloadMp3 = this.gv('TabDownloadMp3');
	this.TabVisitedPages = this.gv('TabVisitedPages');
	this.ResetConfirm = this.gv('ResetConfirm');
	this.VisitedPagesButton = this.gv('VisitedPagesResetButton');
};

function ChangeOpacity(el, opacity) {
	var image = document.getElementById(el);
	if (!image)
		return;
	if (isIE) {
		image.style.filter = "alpha(opacity=" + opacity + ")";
	} else {
		image.style.MozOpacity = (opacity / 100);
	}
	if (opacity < 1) {
		DOM.Remove($(el));
	}
};

function FadeElement(el, milli, start, end) {
	if (!$(el)) return;
	var fadeTime = Math.round(milli / 100);
	var i = 0;  // Fade Timer
	if (start < end) {
		for (j = start; j <= end; j++) {
			var expr = "ChangeOpacity('" + el + "'," + j + ")";
			var timeout = i * fadeTime;
			setTimeout(expr, timeout);
			i++;
		}
	} else if (start > end) {
		for (j = start; j >= end; j--) {
			var expr = "ChangeOpacity('" + el + "'," + j + ")";
			var timeout = i * fadeTime;
			setTimeout(expr, timeout);
			i++;
		}
	}
};



var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }
function md5_vm_test(){
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
function core_md5(x, len) {
	x[len >> 5] |= 0x80 << ((len) % 32);
	x[(((len + 64) >>> 9) << 4) + 14] = len;
	var a = 1732584193;
	var b = -271733879;
	var c = -1732584194;
	var d = 271733878;
	for (var i = 0; i < x.length; i += 16) {
		var olda = a;
		var oldb = b;
		var oldc = c;
		var oldd = d;
		a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
		d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
		c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
		b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
		a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
		d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
		c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
		b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
		a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
		d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
		c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
		b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
		a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
		d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
		c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
		b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);

		a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
		d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
		c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
		b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
		a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
		d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
		c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
		b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
		a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
		d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
		c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
		b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
		a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
		d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
		c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
		b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);

		a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
		d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
		c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
		b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
		a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
		d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
		c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
		b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
		a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
		d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
		c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
		b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
		a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
		d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
		c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
		b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);

		a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
		d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
		c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
		b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
		a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
		d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
		c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
		b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
		a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
		d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
		c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
		b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
		a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
		d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
		c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
		b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);

		a = safe_add(a, olda);
		b = safe_add(b, oldb);
		c = safe_add(c, oldc);
		d = safe_add(d, oldd);
	}
	return Array(a, b, c, d);
};
function md5_cmn(q, a, b, x, s, t) {
	return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md5_ff(a, b, c, d, x, s, t) {
	return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t) {
	return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t) {
	return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t) {
	return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
function core_hmac_md5(key, data) {
	var bkey = str2binl(key);
	if (bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);
	var ipad = Array(16), opad = Array(16);
	for (var i = 0; i < 16; i++) {
		ipad[i] = bkey[i] ^ 0x36363636;
		opad[i] = bkey[i] ^ 0x5C5C5C5C;
	}
	var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
	return core_md5(opad.concat(hash), 512 + 128);
}
function safe_add(x, y) {
	var lsw = (x & 0xFFFF) + (y & 0xFFFF);
	var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
	return (msw << 16) | (lsw & 0xFFFF);
}
function bit_rol(num, cnt) {
	return (num << cnt) | (num >>> (32 - cnt));
}
function str2binl(str) {
	var bin = Array();
	var mask = (1 << chrsz) - 1;
	for (var i = 0; i < str.length * chrsz; i += chrsz)
		bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (i % 32);
	return bin;
}
function binl2str(bin) {
	var str = "";
	var mask = (1 << chrsz) - 1;
	for (var i = 0; i < bin.length * 32; i += chrsz)
		str += String.fromCharCode((bin[i >> 5] >>> (i % 32)) & mask);
	return str;
}
function binl2hex(binarray) {
	var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
	var str = "";
	for (var i = 0; i < binarray.length * 4; i++) {
		str += hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8 + 4)) & 0xF) +
           hex_tab.charAt((binarray[i >> 2] >> ((i % 4) * 8)) & 0xF);
	}
	return str;
}
function binl2b64(binarray) {
	var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	var str = "";
	for (var i = 0; i < binarray.length * 4; i += 3) {
		var triplet = (((binarray[i >> 2] >> 8 * (i % 4)) & 0xFF) << 16)
                | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 0xFF) << 8)
                | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 0xFF);
		for (var j = 0; j < 4; j++) {
			if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
			else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
		}
	}
	return str;
}
