var XYNERGO = (function () {
	var $D = YAHOO.util.Dom,
		$E = YAHOO.util.Event,
		$A = YAHOO.util.Anim,
		pub = {};
	
	var headers, contents, activeContent;
	
	function initAccordion () {
		var headers = $D.get('innhold').getElementsByTagName('h2'),
			contents = [],
			index = 0;

		if (window.location.hash) {
			var section = parseInt(/\d+/.exec(window.location.hash.toString())[0]);
			if (headers[section - 1]) index = (section - 1);
		}
		
		for (var i = 0; i < headers.length; i++) {
			contents.push(wrapContent(headers[i]));
			
			if (i != index) {
				$D.setStyle(contents[i], 'display', 'none');
			}
			else {
				$D.addClass(headers[i], 'aktiv');
			}
			
			headers[i].innerHTML += ' <span>&rarr;</span>';
			$E.on(headers[i], 'click', switchContent);
		}
		
		activeContent = contents[index];
	}
	
	function wrapContent (header) {
		var wrapper = document.createElement('div');
		var sibling = $D.getNextSibling(header);

		$D.setStyle(wrapper, 'overflow', 'hidden');
		$D.setStyle(header, 'marginBottom', '0px');
		
		while (sibling && sibling.nodeName.toLowerCase() != 'h2') {
			var current = sibling;
			$D.setStyle(current, 'marginBottom', '0px');
			sibling = $D.getNextSibling(current);
			wrapper.appendChild(current);
		}
		
		$D.insertAfter(wrapper, header);
		wrapper._originalHeight = wrapper.offsetHeight;

		return wrapper;
	}
	
	function switchContent (e) {
		var header = $E.getTarget(e);
		var newContent = $D.getNextSibling(header);
		
		if (newContent == activeContent) return;
		
		var easing = YAHOO.util.Easing.easeOut;
		var skjul = new $A(activeContent, {height: {to: 0}}, 0.5, easing);
		var vis = new $A(newContent, {height: {from: 0, to: newContent._originalHeight}}, 0.5, easing);
		vis.onStart.subscribe(function () {
			$D.setStyle(newContent, 'display', 'block');
			$D.removeClass($D.getPreviousSibling(activeContent), 'aktiv');
			$D.addClass(header, 'aktiv');
		});
		vis.onComplete.subscribe(function () {
			$D.setStyle(activeContent, 'display', 'none');
			activeContent = newContent;
		});
		
		YAHOO.util.AnimMgr.registerElement(skjul);
		YAHOO.util.AnimMgr.registerElement(vis);
		YAHOO.util.AnimMgr.start();
	}
	
	pub.init = function () {
		if ($D.hasClass(document.body, 'sustainability')
				|| $D.hasClass(document.body, 'about_us')) {
			initAccordion();
		}
	}
	
	return pub;
})();

YAHOO.util.Event.onDOMReady(XYNERGO.init);
