﻿
window.onload = init;
// EVENT.Add(window, 'load', init);

var LAYOUT = {};
var TRANSLATE = {};
var isIE = (navigator.appName.indexOf('Internet Explorer') >= 0);

function init() {
	TRANSLATE.Init();
	SEARCHHANDLER.Init();
	LAYOUT.Init();
	MENU.Init();
	EVENT.Add(document, 'keydown', keyboardSniffer);
	if (typeof hhStatistics == "object" && !hhStatistics.runOnce && typeof sC == "object" && typeof sC.t == "function") {
		hhStatistics.runOnce = true;
		setTimeout('hhStatistics.sCCode = sC.t()', 1000);
	}
}

/* LAYOUT
----------------------------------------------------*/
LAYOUT.Init = function() {
	EVENT.Add(document.getElementById('pdflink'), 'click', POPUP.Show);
	POPUP.CountPdfPages = 5;

	// add pagetool for textsize
	var pagetools = document.getElementById('pagetools');
	var canHaveColumns = false;
	
	var pagetype = document.body.className; // special page, table page
	if (pagetype.indexOf('specialpage') > -1) {
		if (document.body.id == 'notes') {
			NOTEPAGE.Init();
		}
		else if (document.body.id == 'tablepage') {
			TABLELAYOUT.Init();
		}
		else if (document.body.id == 'startpage') {
			initStartpage();
		}
	}
	else if (false) {
		canHaveColumns = true;
		if (COOKIE.Read('RenderMode') == 'fullwidth') {
			document.body.className += ' fullwidth';
			COLUMNLAYOUT.Init();
			//COLUMNLAYOUT.CreateTableIcons();
			COLUMNLAYOUT.RenderColumns();
		}
	}

	if (canHaveColumns) {
		if (COOKIE.Read('RenderMode') == 'fullwidth') {
			// add pagetool for increaseing the text-size
			li = document.createElement('li');
			strHTML = '<a class="separator" href="javascript:LAYOUT.SwitchTextSize();" title="';
			if (COOKIE.Read('TextSize') == 'big')
				strHTML += TRANSLATE.GetValue('TextSizeStandardTitle') + '" id="zoomout">' + TRANSLATE.GetValue('TextSizeStandard') + '</a>';
			else
				strHTML += TRANSLATE.GetValue('TextSizeBigTitle') + '" id="zoomin">' + TRANSLATE.GetValue('TextSizeBig') + '</a>';
			li.innerHTML = strHTML;
			pagetools.appendChild(li);
		}

		// add pagetool for fullwidth mode
		li = document.createElement('li');
		strHTML = '<a id="columns" href="javascript:LAYOUT.SwitchMode();" title="';
		if (COOKIE.Read('RenderMode') != 'fullwidth')
			strHTML += TRANSLATE.GetValue('RenderColumnLayoutTitle') + '">&nbsp;</a>';
		else
			strHTML += TRANSLATE.GetValue('RenderBasicLayoutTitle') + '">&nbsp;</a>';
		li.innerHTML = strHTML;
		pagetools.appendChild(li);
	}

	// if this is a table page or a textpage which includes the table navigation tools
	if (document.getElementById('tabletooltabs')) {
		EVENT.Add(document.getElementById('tabletooltabs'), 'click', TABLELAYOUT.SwitchTool);
	}
};
LAYOUT.SwitchMode = function() {
	if (COOKIE.Read('RenderMode') != 'classic')
		COOKIE.Create('RenderMode', 'classic', '365');
	else
		COOKIE.Create('RenderMode', 'fullwidth', '365');
	
	document.location.reload();
};
LAYOUT.SwitchTextSize = function() {
	if (COOKIE.Read('TextSize') != 'big')
		COOKIE.Create('TextSize', 'big', '365');
	else
		COOKIE.Create('TextSize', '', '365');

	document.location.reload();
};

/* KEYBOARD SNIFFER
----------------------------------------------------*/
var keyboardSniffer = function(e) {
	//if (COOKIE.Read('RenderMode') != 'fullwidth') return;
	var srcType = '', src = null, key;
	e = (!e) ? window.event : e;
	if (!e || e.altKey) return;
	src = (typeof e.target !== 'undefined') ? e.target : e.srcElement;
	key = (typeof e.keyCode !== 'undefined') ? e.keyCode : e.which;
	srcType = src.tagName;

	/*var validIds = new Array('tbSearchBox', 'tbSearchBoxInMenu', 'txtPasswordLogin', 'txtPassword');*/
	if (srcType == 'INPUT' || srcType == 'TEXTAREA') {
		return;
	}

	switch (key) {
		//------------------------------                    
		//## ENTER:                    
		case 13:
			switch (src.id) {
				case 'tbSearchBox':
				case 'tbSearchBoxInMenu':
					SEARCHHANDLER.SearchForm(e);
					break;

				case 'txtPasswordLogin':
					ActionHandler('login');
					break;

				case 'txtPassword':
					ActionHandler('button-signup');
					break;
			}

			EVENT.Abort(e);
			break;

		//------------------------------                    
		//## RIGHT ARROW:        
		case 39:
			if (COLUMNLAYOUT.scrollPanel) {
				EVENT.Abort(e);
				COLUMNLAYOUT.ScrollNext();
			}
			break;
		//------------------------------                    
		//## LEFT ARROW:       
		case 37:
			if (COLUMNLAYOUT.scrollPanel) {
				EVENT.Abort(e);
				COLUMNLAYOUT.ScrollPrevious();
			}
			break;
		//------------------------------                    
		//## END:          
		case 35:
			if (COLUMNLAYOUT.scrollPanel) {
				EVENT.Abort(e);
				COLUMNLAYOUT.ScrollTo(COLUMNLAYOUT.countColumns - 1);
			}
			break;
		//------------------------------                    
		//## HOME:         
		case 36:
			if (COLUMNLAYOUT.scrollPanel) {
				EVENT.Abort(e);
				COLUMNLAYOUT.ScrollTo(0);
			}
			break;
		//------------------------------                    
		//## ESCAPE:                
		case 27:
			POPUP.AnimateClose();
			break;
		//------------------------------                    
		//## NOTHING:                    
		default: return true; break;
	}
};

/* TRANSLATE
----------------------------------------------------*/
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;
};

/* COOKIE
----------------------------------------------------*/
var COOKIE = function() {
	return {
		Create: function(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = '; expires=' + date.toGMTString() } else { var expires = '' } document.cookie = name + '=' + value + expires + '; path=/' },
		Read: function(name) { var nameEQ = name + '=', ca = document.cookie.split(';'); for (var i = 0, n = ca.length; i < n; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1, c.length) }; if (c.indexOf(nameEQ) == 0) { return c.substring(nameEQ.length, c.length) } }; return null },
		Remove: function(name) { COOKIE.Create(name, '', -1) }
	}
} ();
/* EVENT HANDLER (v.20090320) 
----------------------------------------------------*/
var EVENT = function() {
	return { Add: function(obj, EventType, FunctionName) { var eventTypeRef = '__' + EventType; if (obj[eventTypeRef]) { if (EVENT.Search(FunctionName, obj[eventTypeRef]) > -1) return } else { obj[eventTypeRef] = []; if (obj['on' + EventType]) obj[eventTypeRef][0] = obj['on' + EventType]; obj['on' + EventType] = EVENT.Handle } obj[eventTypeRef][obj[eventTypeRef].length] = FunctionName },
		Remove: function(obj, EventType, FunctionName) { var eventTypeRef = '__' + EventType; if (obj[eventTypeRef]) { var i = EVENT.Search(FunctionName, obj[eventTypeRef]); if (i > -1) delete obj[eventTypeRef][i] } },
		Handle: function(e) { e = e || window.event; var eventTypeRef = '__' + e.type, returnValue = true; for (var i = 0, j = this[eventTypeRef].length; i < j; i++) { if (this[eventTypeRef][i]) { this.__fn = this[eventTypeRef][i]; returnValue = this.__fn(e) && returnValue } } if (this.__fn) try { delete this.__fn } catch (e) { this.__fn = null } return returnValue },
		Search: function(val, arr) { var i = arr.length; while (i--) { if (arr[i] && arr[i] === val) break } return i },
		Abort: function(e) { if (e.preventDefault) { e.preventDefault() } else { e.returnResult = false } if (e.stopPropagation) { e.stopPropagation() } else { e.cancelBubble = true; event.returnValue = false } }
	}
} ();

/* ANIMATIONS 
---------------------------------------------------*/
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; }
function linear(t, b, c, d) { return c * t / d + b; }
function sineInOut(t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; }
function cubicInOut(t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b; }
function bounceOut(t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } }

/* SPECIAL PAGES
---------------------------------------------------*/
var NOTEPAGE = {};

NOTEPAGE.Show = function(index) {
	NOTEPAGE.Sections[NOTEPAGE.Current].style.display = 'none';
	NOTEPAGE.Tabs[NOTEPAGE.Current].className = '';
	NOTEPAGE.Current = index;
	NOTEPAGE.Sections[NOTEPAGE.Current].style.display = 'block';
	NOTEPAGE.Tabs[NOTEPAGE.Current].className = 'selected';
};

NOTEPAGE.Init = function() {
	var content = document.getElementById('maincontent');
	var tabs = document.createElement('div');
	tabs.id = 'notestabs';
	var ul = document.createElement('ul');

	NOTEPAGE.Sections = new Array();
	NOTEPAGE.Tabs = new Array();
	var i = 0;
	var elements = content.childNodes;
	div = document.createElement('div');

	NOTEPAGE.Current = 0;
	NOTEPAGE.Sections.push(div);

	while (elements.length > 0) {
		if (elements[0].tagName == 'H2') {
			i++;
			if (i > 1) {
				i = 0;
				div = document.createElement('div');
				NOTEPAGE.Sections.push(div);
				break;
			}
		}
		div.appendChild(elements[0]);
	}
	while (elements.length > 0) {
		if (elements[0].tagName == 'H2') {
			i++;
			if (i > 1) {
				i = 0;
				div = document.createElement('div');
				NOTEPAGE.Sections.push(div);
				break;
			}
		}
		div.appendChild(elements[0]);
	}

	while (elements.length > 0) {
		if (elements[0].tagName == 'H2') {
			i++;
			if (i > 6) {
				i = 1;
				div = document.createElement('div');
				NOTEPAGE.Sections.push(div);
			}
		}
		div.appendChild(elements[0]);
	}

	content.appendChild(tabs);
	var from = 1, to = 0;
	for (var i = 0; i < NOTEPAGE.Sections.length; i++) {
		content.appendChild(NOTEPAGE.Sections[i]);
		var li = document.createElement('li');
		NOTEPAGE.Tabs.push(li);
		ul.appendChild(NOTEPAGE.Tabs[i]);

		if (i == 0)
			li.innerHTML = '<a href="javascript:NOTEPAGE.Show(0);">' + TRANSLATE.GetValue('AccountingPolicies') + '</a>';
		else if (i == 1)
			li.innerHTML = '<a href="javascript:NOTEPAGE.Show(1);">' + TRANSLATE.GetValue('SegmentInformation') + '</a>';
		else {
			if (i == NOTEPAGE.Sections.length - 1)
				to = from + NOTEPAGE.Sections[i].getElementsByTagName('h2').length - 1;
			else
				to = from + 5;

			li.innerHTML = '<a href="javascript:NOTEPAGE.Show(' + i + ');">' + from + '-' + to + '</a>';
			from = to + 1;
		}
	}
	tabs.appendChild(ul);
	div = document.createElement('div');
	div.innerHTML = '&nbsp;';
	tabs.appendChild(div);
	NOTEPAGE.Show(0);

};
function initStartpage() {
	var link = document.createElement('a');
	link.id = 'playvideo';
	link.href = 'javascript:startVideo(true);';
	document.getElementById('content').appendChild(link);
}