/*
// Copyright 2008 Comsys (except notes on indvidual work)
// Tabs and slider support code
// Developer: Peter
//
// Future development: 
// - Allow individual slides to have "selfclose"- and "individual"-flags set through
// e.g. "mode" in {slide=first css=style1 mode=IS}... where I=individual flag and S=selfclose flag.
//
// - Allow for individual speed ratings as the length of content affect the slide effect! (alt. force longer to run quicker!)
//
// - Maybe add movement with different speed at different times following a more natural pattern.

*/

// Default Loader
function init_cmsT() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;
	tabberAutomatic(tabberOptions);
	cms_individual =false; // allow individual slides to be opened/closed
	cms_selfclose = false; //allow self close
	initShowHideDivs();
};
// DOM2
if ( typeof window.addEventListener != "undefined" ) {
	window.addEventListener( "load", init_cmsT, false );
// IE 
} else if ( typeof window.attachEvent != "undefined" ) {
	window.attachEvent( "onload", init_cmsT );
} else {
	if ( window.onload != null ) {
		var oldOnload = window.onload;
		window.onload = function ( e ) {
			oldOnload( e );
			init_cmsT();
		};
	} else {
		window.onload = init_cmsT;
	}
}

/* Copyright (c) 2006 Patrick Fitzgerald - Version 1.9 */
// Temporarily hide tabs
document.write('<style type="text/css">.cms_tabber{display:none;}<\/style>');
// Set tab options
var tabberOptions = {
  //start on DOM ready
  'manualStartup':true,
	//'cookie':"cms_tabcookie", /* Name to use for the cookie */
  'onLoad': function(argsObj)
  {
    var t = argsObj.tabber;
    var i;
    //if (t.id) {
    //  t.cookie = t.id + t.cookie;
    //}
    i = parseInt(getCookie(t.cookie));
    if (isNaN(i)) { return; }
    t.tabShow(i);
    //alert('getCookie(' + t.cookie + ') = ' + i);
  },
  'onClick':function(argsObj)
  {
    var c = argsObj.tabber.cookie;
    var i = argsObj.index;
    //alert('setCookie(' + c + ',' + i + ')');
    //setCookie(c, i);
  }
};
// Cookie handling
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie= name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}
// The tabs!
function tabberObj(argsObj)
{var arg;this.div=null;this.classMain="cms_tabber";this.classMainLive="cms_tabberlive";this.classTab="cms_tabbertab";this.classTabDefault="cms_tabbertabdefault";this.classNav="cms_tabbernav";this.classTabHide="cms_tabbertabhide";this.classNavActive="cms_tabberactive";this.titleElements=['h2','h3','h4','h5','h6'];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat='<tabberid>nav<tabnumberone>';for(arg in argsObj){this[arg]=argsObj[arg];}
this.REclassMain=new RegExp('\\b'+this.classMain+'\\b','gi');this.REclassMainLive=new RegExp('\\b'+this.classMainLive+'\\b','gi');this.REclassTab=new RegExp('\\b'+this.classTab+'\\b','gi');this.REclassTabDefault=new RegExp('\\b'+this.classTabDefault+'\\b','gi');this.REclassTabHide=new RegExp('\\b'+this.classTabHide+'\\b','gi');this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}}
tabberObj.prototype.init=function(e)
{var
childNodes,i,i2,t,defaultTab=0,DOM_ul,DOM_li,DOM_a,aId,headingElement;if(!document.getElementsByTagName){return false;}
if(e.id){this.id=e.id;}
this.tabs.length=0;childNodes=e.childNodes;for(i=0;i<childNodes.length;i++){if(childNodes[i].className&&childNodes[i].className.match(this.REclassTab)){t=new Object();t.div=childNodes[i];this.tabs[this.tabs.length]=t;if(childNodes[i].className.match(this.REclassTabDefault)){defaultTab=this.tabs.length-1;}}}
DOM_ul=document.createElement("ul");DOM_ul.className=this.classNav;for(i=0;i<this.tabs.length;i++){t=this.tabs[i];t.headingText=t.div.title;if(this.removeTitle){t.div.title='';}
if(!t.headingText){for(i2=0;i2<this.titleElements.length;i2++){headingElement=t.div.getElementsByTagName(this.titleElements[i2])[0];if(headingElement){t.headingText=headingElement.innerHTML;if(this.titleElementsStripHTML){t.headingText.replace(/<br>/gi," ");t.headingText=t.headingText.replace(/<[^>]+>/g,"");}
break;}}}
if(!t.headingText){t.headingText=i+1;}
DOM_li=document.createElement("li");t.li=DOM_li;DOM_a=document.createElement("a");DOM_a.appendChild(document.createTextNode(t.headingText));DOM_a.href="javascript:void(null);";DOM_a.title=t.headingText;DOM_a.onclick=this.navClick;DOM_a.tabber=this;DOM_a.tabberIndex=i;if(this.addLinkId&&this.linkIdFormat){aId=this.linkIdFormat;aId=aId.replace(/<tabberid>/gi,this.id);aId=aId.replace(/<tabnumberzero>/gi,i);aId=aId.replace(/<tabnumberone>/gi,i+1);aId=aId.replace(/<tabtitle>/gi,t.headingText.replace(/[^a-zA-Z0-9\-]/gi,''));DOM_a.id=aId;}
DOM_li.appendChild(DOM_a);DOM_ul.appendChild(DOM_li);}

e.insertBefore(DOM_ul,e.firstChild);e.className=e.className.replace(this.REclassMain,this.classMainLive);this.tabShow(defaultTab);if(typeof this.onLoad=='function'){this.onLoad({tabber:this});}
return this;};tabberObj.prototype.navClick=function(event)

// event handler for tabs
{var rVal,a,self,tabberIndex,onClickArgs;a=this;if(!a.tabber){return false;}
self=a.tabber;tabberIndex=a.tabberIndex;a.blur();if(typeof self.onClick=='function'){onClickArgs={'tabber':self,'index':tabberIndex,'event':event};if(!event){onClickArgs.event=window.event;}
rVal=self.onClick(onClickArgs);if(rVal===false){return false;}}

self.tabShow(tabberIndex); return false;};tabberObj.prototype.tabHideAll=function()

{var i;for(i=0;i<this.tabs.length;i++){this.tabHide(i);}};tabberObj.prototype.tabHide=function(tabberIndex)

// hides all tabs on click event
{var div,divC;if(!this.tabs[tabberIndex]){return false;}
div=this.tabs[tabberIndex].div;
if(!div.className.match(this.REclassTabHide)){
		div.className+=' '+this.classTabHide;
		}
		this.navClearActive(tabberIndex);return this;};
		tabberObj.prototype.tabShow=function(tabberIndex)

{var div;if(!this.tabs[tabberIndex]){return false;}
this.tabHideAll(); // start by hiding all divs
div=this.tabs[tabberIndex].div; // set div to unhide

var subd = div.getElementsByTagName('div'); // get inner div // example of setting inner div height: subd[0].style.height="1px";

div.className=div.className.replace(this.REclassTabHide,'');  // unhide and unhide selected div
this.navSetActive(tabberIndex); // activate selected tab

// PLACE CODE HERE TO IMPLEMENT A CONTENT SLIDE FOR TABS USING (Subd[0].style.height)

// setup code
if(typeof this.onTabDisplay=='function'){this.onTabDisplay({'tabber':this,'index':tabberIndex});}
return this;};tabberObj.prototype.navSetActive=function(tabberIndex)
{this.tabs[tabberIndex].li.className=this.classNavActive;return this;};tabberObj.prototype.navClearActive=function(tabberIndex)
{this.tabs[tabberIndex].li.className='';return this;};function tabberAutomatic(tabberArgs)
{var tempObj,divs,i;if(!tabberArgs){tabberArgs={};}
tempObj=new tabberObj(tabberArgs);divs=document.getElementsByTagName("div");for(i=0;i<divs.length;i++){if(divs[i].className&&divs[i].className.match(tempObj.REclassMain)){tabberArgs.div=divs[i];divs[i].tabber=new tabberObj(tabberArgs);}} return this;}

function tabberAutomaticOnLoad(tabberArgs)
{var oldOnLoad;if(!tabberArgs){tabberArgs={};}
oldOnLoad=window.onload;if(typeof window.onload!='function'){window.onload=function(){tabberAutomatic(tabberArgs);};}else{window.onload=function(){oldOnLoad();tabberAutomatic(tabberArgs);};}}
if(typeof tabberOptions=='undefined'){tabberAutomaticOnLoad();}else{if(!tabberOptions['manualStartup']){tabberAutomaticOnLoad(tabberOptions);}}


/* Copyright (c)2008 by Comsys and Peter (based on part of Alf Magne Kalleland's work from 2006) */
var rerunFunction= false;
//var groupToSlideDown = false;
//var objectIdToSlideDown = false;
var cms_individual = false; // true if manual mode - opening and closing slides individually allowed
var cms_selfclose = false; // set true if allowed to close slides individually
var cms_activeId = new Array(); // array of active element per slide group
var mousetimer;
var triggerId = false;
var triggerTIME = 250; // 500ms mouseover trigger delay
function showHideContent(e,inputId) {
	if(!inputId)inputId = this.id;
	var a=inputId;
	var b = a.split("_");
	var grp = b[0].substring(5,b[0].length); // slide group
	var slide = b[2].substring(1,b[2].length); // slide nbr
	var answerDiv = document.getElementById(b[0]+'_cms_a'+slide);
//	objectIdToSlideDown = false;
	if (!cms_individual) {
		//evaluate action in auto mode (only one item allowed open at a time per group)
		if(!answerDiv.style.display || answerDiv.style.display=='none'){
			//i am not open -> close opened in same group and open myself
			if (cms_activeId[grp]) {slideContent(grp,cms_activeId[grp],(cms_slideSpeed*-1),false);} // close active if any
			answerDiv.style.display='block';
			answerDiv.style.visibility = 'visible';
			slideContent(grp,slide,cms_slideSpeed,false); //open me
			cms_activeId[grp]=slide; // set me as active! ###########################################ACTIVE
		}else{
			//i am open -> not allow to close myself!
			if (cms_selfclose) {
			slideContent(grp,slide,(cms_slideSpeed*-1),false);
			cms_activeId[grp]=false; // remove me as active! ###########################################ACTIVE
			}
		}
	}else{
		//evaluate action in individual mode (opening and closing individually)
		cms_activeId[grp]=false; // always set false in individual mode as not used ###########################################ACTIVE
		if(!answerDiv.style.display || answerDiv.style.display=='none'){
			//i am not open -> close active in same group and open myself
			answerDiv.style.display='block';
			answerDiv.style.visibility = 'visible';
			slideContent(grp,slide,cms_slideSpeed,false); //open me
		}else{
			//i am open -> close myself and remove me if active!
			slideContent(grp,slide,(cms_slideSpeed*-1),false);
		}
	}
	// activate/inactivate list anchors
	var obj=document.getElementById("slide"+grp).getElementsByTagName("ul");
	var items = obj[0].getElementsByTagName("a");
	for(var n=0;n<items.length;n++){
		if (n+1==slide && cms_activeId[grp]==slide) {
			items[n].className="active";
		}else{
			items[n].className="";
		}
	}	
}
function slideContent(grp,slide,direction,state) {
	var obj =document.getElementById('slide'+grp+'_cms_a'+slide);
	var contentObj =document.getElementById('slide'+grp+'_cms_ac'+slide);
	if (state==false || state==obj.clientHeight) { // if new or not changed
		height = obj.clientHeight;
		height = height + direction;
		state = height;
		rerunFunction = true;
		if(height>contentObj.offsetHeight){
			height = contentObj.offsetHeight;
			rerunFunction = false;
		}
		if(height<=1){
			height =0;
			rerunFunction = false;
		}
		obj.style.height = height + 'px';
		var topPos = height - contentObj.offsetHeight;
		if(topPos>0)topPos=0;
		contentObj.style.top = topPos + 'px';
		if(rerunFunction){
			setTimeout('slideContent(' + grp + ',' + slide + ',' + direction + ',' + state + ')',cms_timer);
		}else{
			if(height<=1){
				obj.style.display='none'; 
//				if(objectIdToSlideDown && objectIdToSlideDown!=slide){
//					document.getElementById('slide'+groupToSlideDown+'_cms_a'+ objectIdToSlideDown).style.display='block';
//					document.getElementById('slide'+groupToSlideDown+'_cms_a'+ objectIdToSlideDown).style.visibility='visible';
//					slideContent(groupToSlideDown,objectIdToSlideDown,cms_slideSpeed,false);				
//				}
			}else{
				//cms_activeId[grp] = slide; ###########################################ACTIVE
			}
		}
	}
}
function triggerDelay(e,inputId) {
	if(!inputId)inputId = this.id;
	triggerId=inputId;
	mousetimer=setTimeout('triggerIt()',triggerTIME);
}
function triggerClear(){
	clearTimeout(mousetimer);
}
function triggerIt(){
	showHideContent(false,triggerId);
}
function slidemenu(grp,slide){
	showHideContent(false,'slide' + grp + '_cms_q' + slide);
}
function initShowHideDivs() {
	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){
		if(divs[no].id.substring(0,5)=='slide' && (divs[no].id.split("_").length<2)){  /// ONLY ALLOWS PROPERLY DECLARED SLIDES AT THE MOMENT! ///
			var grp=divs[no].id +"_";
			var numgrp = divs[no].id.substring(5,divs[no].id.length); // slide group
			var subd = divs[no].getElementsByTagName('div'); // get inner div // example of setting inner div height: subd[0].style.height="1px";
			var divCounter = 1;
			for(var nr=0;nr<subd.length;nr++){ // handle each sub group individually
				if(subd[nr].className=='cms_menu'){ //  handle slide menu
					var list=subd[nr].getElementsByTagName('A');
					for(var m=0;m<list.length;m++){ // handle each tag individually
						list[m].href =  'javascript: slidemenu(' + numgrp + ',' + (m+1) + ');'
					}
				}
				if(subd[nr].className=='cms_title'){
					subd[nr].onclick = showHideContent;
					subd[nr].onmouseover = triggerDelay;
					subd[nr].onmouseout= triggerClear;
					subd[nr].id = grp + 'cms_q'+ divCounter; // added grp
					var answer = subd[nr].nextSibling;
					while(answer && answer.tagName!='DIV'){
						answer = answer.nextSibling;
					}
					answer.id = grp + 'cms_a'+ divCounter;	// added grp
					contentDiv = answer.getElementsByTagName('DIV')[0];
					contentDiv.style.top = 0 - contentDiv.offsetHeight + 'px'; 	
					contentDiv.className='cms_slidecontent';
					contentDiv.id = grp + 'cms_ac' + divCounter; // added grp
					answer.style.display='none';
					answer.style.height='1px';
					divCounter++;
				}		
			}
			// open all first sliders by default
			var t1=grp.split("_");
			var t2=t1[0] + '_cms_q'+ 1;
			var t3= t1[0].substring(5,t1[0].length);	
			if (!cms_activeId[t3]==1){
				var temp=cms_slideSpeed;
				var temp2=cms_timer;
				cms_slideSpeed=1000;
				cms_slideSpeed=1000;
				showHideContent(false,t2);
				cms_slideSpeed=temp;
				cms_timer=temp2;
			}
		}
	}	
}