infotab = {
	tabClass:'infotab',

	listClass:'flagtabs',

	activeClass:'active',

	contentElements:'div',

	init:function() {
		var temp;
		if(!document.getElementById || !document.createTextNode){return;}
		var tempelm=document.getElementsByTagName('div');
		for(var i=0;i<tempelm.length;i++){
			if(!infotab.cssjs('check',tempelm[i],infotab.tabClass)){continue;}
			infotab.initTabMenu(tempelm[i]);
		}
	},

	initTabMenu:function(menu){
		var id;
		var lists=menu.getElementsByTagName('ul');
		for(var i=0;i<lists.length;i++){
			if(infotab.cssjs('check',lists[i],infotab.listClass)){
				var thismenu=lists[i];
				break;
			}
		}
		if(!thismenu){return;}
		thismenu.currentSection='';
		thismenu.currentLink='';
		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)){
				infotab.addEvent(links[i],'click',infotab.showTab,false);
				links[i].onclick=function(){return false;} // safari hack
				infotab.changeTab(document.getElementById(id),0);
			}
		}
		id=links[0].href.match(/#(\w.+)/)[1];
		if(document.getElementById(id)){
			infotab.changeTab(document.getElementById(id),1);
			thismenu.currentSection=id;
			thismenu.currentLink=links[0];
			infotab.cssjs('add',links[0].parentNode,infotab.activeClass);
		}
	},

	changeTab:function(elm,state) {
		do {
			elm=elm.parentNode;
		}
		while(elm.nodeName.toLowerCase()!=infotab.contentElements)
		elm.style.display=state==0?'none':'block';
	},

	showTab:function(e) {
		var o=infotab.getTarget(e);
		if(o.parentNode.parentNode.currentSection!=''){
			infotab.changeTab(document.getElementById(o.parentNode.parentNode.currentSection),0);
			infotab.cssjs('remove',o.parentNode.parentNode.currentLink.parentNode,infotab.activeClass);
		}
		var id=o.href.match(/#(\w.+)/)[1];
		o.parentNode.parentNode.currentSection=id;
		o.parentNode.parentNode.currentLink=o;
		infotab.cssjs('add',o.parentNode,infotab.activeClass);
		infotab.changeTab(document.getElementById(id),1);
		document.getElementById(id).focus();
		infotab.cancelClick(e);
		document.getElementById(id).parentNode.style.display = 'block';	// 2008-03-07: very important!
	},

	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)
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			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=!infotab.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!infotab.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;
		}
	}
}
infotab.addEvent(window, 'load', infotab.init, false);
