/**
	Original written by Christian Heilmann
	Upgradet version by Radek Hill
*/

var domtab = {
	tabClass:'domtab', // class to trigger tabbing
	spanClass:'tab', // proste span s tridou tab
	listClass:'tabs', // class of the menus
	arrowClass:'domtabArrow', // class of the arrows
	activeClass:'active', // class of current link
	contentElements:'div', // elements to loop through
	scrollPx:88, // scrolling by x px
	scrollMs:50, // speed of scrolling - nyni 
	visibleTabs:3, // pocet viditelnych zalozek v bunce
	slideTimer:false, 
	
	init:function(){
		var temp;
		if(!document.getElementById || !document.createTextNode){return;}
		var tempelm=document.getElementsByTagName('div');		
		for(var i=0;i<tempelm.length;i++){
			if(!domtab.cssjs('check',tempelm[i],domtab.tabClass)){continue;}
			domtab.initTabMenu(tempelm[i]);
			domtab.checkURL();
		}

		// IE BUG - oprava umisteni nasledujiciho portlet - objevoval se az v paticce
		var IE6 = (navigator.appVersion.indexOf("MSIE 6.")==-1) ? false : true;
		var IE7 = (navigator.appVersion.indexOf("MSIE 7.")==-1) ? false : true;
		
		if (IE6 || IE7) {
			document.getElementById('rssCurrentNews').nextSibling.style.display = "block";
		}
	},
	checkURL:function(){
		var id;
		var loc=window.location.toString();
		loc = /#/.test(loc) ? loc.match(/#(\w.+)/)[1] : '';

		if(loc==''){return;}
		var elm=document.getElementById(loc);
		if(!elm){return;}
		var parentMenu=elm.parentNode.parentNode.parentNode;
		parentMenu.currentSection=loc;
		parentMenu.getElementsByTagName(domtab.contentElements)[0].style.display='none';
		domtab.cssjs('remove',parentMenu.getElementsByTagName('a')[0], domtab.activeClass);
		var links=parentMenu.getElementsByTagName('a');
		for(i=0;i<links.length;i++){
			if(!links[i].getAttribute('href')){continue;}
			if(!/#/.test(links[i].getAttribute('href').toString())){continue;}
			id=links[i].href.match(/#(\w.+)/)[1];
			if(id==loc){
				var cur=links[i].parentNode.parentNode;
				domtab.cssjs('add',links[i], domtab.activeClass);
				break;
			}
		}
		domtab.changeTab(elm,1);
		elm.focus();
		cur.currentLink=links[i];
		cur.currentSection=loc;
	},
	slideTab:function(objDiv, direction) { // direction 0 - vlevo, 1 - vpravo
		if (!objDiv.style.left) objDiv.style.left = 0 + 'px';
		direction = (direction > 0) ? 1 : -1;

		var currentPx = parseInt(objDiv.style.left);
		// nejdrive vypocteme pozici, kam by se mely zalozky posunout		
		var countPx = currentPx + (domtab.scrollPx * (direction > 0 ? -1 : 1));
		
		// zjistime sirku zalozek a sirku divu a vypocteme min bod posunuti, 
		// tak aby byla videt cela posledni zalozka v pravo
		var lists = objDiv.getElementsByTagName('span');
		var count_tabs = 0;
		for(var i=0;i<lists.length;i++){
			if(!domtab.cssjs('check',lists[i],domtab.spanClass)){continue;}
			count_tabs++;
		}

		var margin = 4; // mezera mezi zalozkama
		// sirka zalozky vcetne okraje * pocet zalozek + padding contejneru div left + right
		var divWidth = (lists[0].offsetWidth + margin) * count_tabs + 20;
		// minimalni pozice posunuti vlevo, od sirky vsech zalozek odecteme zobrazitelnou sirku portletu 
		var minPosition = (divWidth - objDiv.parentNode.offsetWidth) * -1;
	
		// pokud je delka zalozek kratsi nez zobrazovana sirka, vyjde kladne cislo 
		if (minPosition > 0) minPosition = 0; 
		// nastal presah zleva, nastavime max hodnotu posunuti a to je 0;
		if (countPx > 0) countPx = 0;
		// nastal presah zprava, nastavime min hodnotu posunuti danou vypoctem
		else if (countPx < minPosition) countPx = minPosition;
		// doslo k opakovani posunuti na stejnou pozici, zastavime cyklus
		if (currentPx == countPx) {
			domtab.stopTimeout();
		}
		else {
			objDiv.style.left = countPx + 'px';
		}
	},
	autoSlideTab:function(objDiv, direction) {
		domtab.slideTimer = setInterval( function(event){domtab.slideTab(objDiv, direction);}, domtab.scrollMs);
	},
	stopTimeout:function () {
		clearInterval(domtab.slideTimer);
	},
	initTabMenu:function(menu){
		var id;
		var lists=menu.getElementsByTagName('div'); // najdeme hlavni obalovaci element zalozek
		for(var i=0;i<lists.length;i++){
			if(domtab.cssjs('check',lists[i],domtab.listClass)){ // pokud nazev tridy odpovida, nastavime mu delku 1000px
				var thismenu=lists[i];
				thismenu.style.width = 1000 + 'px'; 
				break;
			}
		}
		if(!thismenu){return;}
		// hlavnimu obalovacimu tagu zalozek (div class="tabs") 
		// nastavime vlastnosti - ID rozkliknute sekce a Link rozkliknute sekce
		thismenu.currentSection='';
		thismenu.currentLink='';
						
		// projdeme vsechny zalozkove tagy A a nastavime mu udalosti onclick=domtab.showTab()
		var links = thismenu.getElementsByTagName('a');
		for(i=0;i<links.length;i++){
			if(!/#/.test(links[i].getAttribute('href').toString())){continue;}
			id=links[i].href.match(/#(\w.+)/)[1];
			if(document.getElementById(id)){
				domtab.addEvent(links[i],'click',domtab.showTab,false);
				links[i].onclick=function(){return false;} // safari hack
				// postupne povypina obsahove divy
				domtab.changeTab(document.getElementById(id),0);
			}
		}
		// vezme prvni zalozku a obsahovy div nastavi na display:block
		id=links[0].href.match(/#(\w.+)/)[1];
		if(document.getElementById(id)){
			domtab.changeTab(document.getElementById(id),1);
			thismenu.currentSection=id;
			thismenu.currentLink=links[0];
			// nastavi prvni zalozce - tagu A class active
			domtab.cssjs('add',links[0], domtab.activeClass);
		}
		
		// var i predstavuje z posledniho cyklu FOR pocet zalozek
		// najdeme sipky v danem zalozkovem MENU a pridame udalosti pro pohyb
		var countTab = i; 
		var arrows = menu.getElementsByTagName('div');
		// pro urceni sipky vlevo a vpravo
		var count = -1; 
		for(var i=0; i < arrows.length; i++){
			if(domtab.cssjs('check', arrows[i], domtab.arrowClass)) {
				// pocet zalozek je presne na obrazovku, skryjeme sipky
				if (countTab <= domtab.visibleTabs) arrows[i].style.display = 'none'; 
				count++;
			/* system posunu zalozek kliknutim */	
				if (!count) {
					// najdeme odkaz A (prvni child divu) a pridame udalost onlick
					domtab.addEvent(arrows[i].firstChild, 'click', function(event){domtab.slideTab(thismenu, -1);}, false);
				} else {
					domtab.addEvent(arrows[i].firstChild, 'click', function(event){domtab.slideTab(thismenu, 1);}, false);
				}
				
			/* system plynuleho posunu zalozek drzenim mysi - nyni deaktivovano
				if (!count) {
					// najdeme odkaz A (prvni child divu) a pridame udalost onlick
					domtab.addEvent(arrows[i].firstChild, 'mousedown', function(event){domtab.autoSlideTab(thismenu, -1);}, false);
					
				} else {
					domtab.addEvent(arrows[i].firstChild, 'mousedown', function(event){domtab.autoSlideTab(thismenu, 1);}, false);
				}
				domtab.addEvent(arrows[i].firstChild, 'mouseup', domtab.stopTimeout, false);
				domtab.addEvent(arrows[i].firstChild, 'mouseout', domtab.stopTimeout, false);
			*/
				arrows[i].firstChild.onclick=function(){return false;} // safari hack
			}
		}
	},
	
	navTabs:function(e){
		var li=domtab.getTarget(e);
		var menu=li.parentNode.parentNode.menu;
		var count=li.parentNode.parentNode.i;
		var section=menu.getElementsByTagName(domtab.contentElements);
		var links=menu.getElementsByTagName('a');
		var othercount=(li.parentNode.className==domtab.prevClass)?count-1:count+1;
		section[count].style.display='none';
		domtab.cssjs('remove',links[count], domtab.activeClass);
		section[othercount].style.display='block';
		domtab.cssjs('add',links[othercount], domtab.activeClass);
		var parent=links[count].parentNode.parentNode;
		parent.currentLink=links[othercount];
		parent.currentSection=links[othercount].href.match(/#(\w.+)/)[1];
		domtab.cancelClick(e);
	},
	changeTab:function(elm,state){
		do{
			elm=elm.parentNode;
		} while(elm.nodeName.toLowerCase()!=domtab.contentElements)
		elm.style.display=state==0?'none':'block';
		
		// zruseni
		
	},
	showTab:function(e){
		// zde neni jasne na ktery tag se ktery prohlizec kliknutim dostal
		var o = domtab.getTarget(e);
		// snazime se najit tag A, bud je objekt o primo tag A nebo je to jeho rodic
		if (o.parentNode.tagName == 'A') o = o.parentNode;
		// najdeme hlavni obalovaci tag zalozek, ktery ma ulozene Id rozkliknute sekce a Link
		var divTabs = o.parentNode.parentNode; 
		// osetreni zda je to spravny tag DIV s tridou TABS
		if (divTabs.className.match(domtab.listClass) == null) return false;

		if (divTabs.currentSection != ''){
			// deaktivujeme predchozi aktivni sekci
			domtab.changeTab(document.getElementById(divTabs.currentSection), 0);
			// zrusime predchozi zalozku jako aktivni
			domtab.cssjs('remove', divTabs.currentLink, domtab.activeClass);
		}
		var id = o.href.match(/#(\w.+)/)[1];
		// prenastavime Id aktivni sekce a link na aktualni rozkliknuty
		divTabs.currentSection = id;
		divTabs.currentLink = o;
		domtab.cssjs('add', o, domtab.activeClass);
		domtab.changeTab(document.getElementById(id),1);
		document.getElementById(id).focus();
		domtab.cancelClick(e);
	},
/* helper methods */
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;}
		return target;
	},
	cancelClick:function(e){
		if (window.event){
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			return;
		}
		if (e){
			e.stopPropagation();
			e.preventDefault();
		}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener) // FF
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) { // IE
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	cssjs:function(a,o,c1,c2){
		switch (a){
			case 'swap':
				o.className=!domtab.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!domtab.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			break;
			case 'remove':
				var rep=o.className.match(' '+c1)?' '+c1:c1;
				o.className=o.className.replace(rep,'');
			break;
			case 'check':
				var found=false;
				var temparray=o.className.split(' ');
				for(var i=0;i<temparray.length;i++){
					if(temparray[i]==c1){found=true;}
				}
				return found;
			break;
		}
	}
}
domtab.addEvent(window, 'load', domtab.init, false);