bln={
	dynamicClass:'bln',
	currentClass:'current',
	hideTabClass:'hide',
	showClass:'show',
	panelId:'tabPanel',
	tabButtons:'tabsNav',
	currentLink:null,
	currentPanel:null,

	init:function(){
		if(!document.getElementById || !document.createTextNode){return;}
		var container=document.getElementById(bln.panelId);
		if(!container){return;}
		bln.cssJs('add',container,bln.dynamicClass);
		bln.initTabs();
	},
	initTabs:function(){
		var nav=document.getElementById(bln.tabButtons);
		var isset=false,vis;
		if(nav && nav.getElementsByTagName('a')[0]){
			var links=nav.getElementsByTagName('a');
			var firstSection=links[0].href.toString().match(/#(.*)/)[1];
			firstSection=document.getElementById(firstSection);
			if(firstSection){
				for(var i=0;i<links.length;i++){
					vis = false;
					var tab=document.getElementById(links[i].getAttribute('href').toString().match(/#(.*)/)[1]);
					if (tab && tab.childNodes.length > 0) {
						if (tab.childNodes.length == 1 && (tab.childNodes[0].innerHTML == '&nbsp;' || tab.childNodes[0].innerHTML == ' &nbsp; ' || tab.childNodes[0].innerHTML == '&nbsp; ' || tab.childNodes[0].innerHTML == ' &nbsp;')) {
							// catch empty paragraph
						} else {
							vis = true;
						  }
					}
					if (vis) {
						bln.addEvent(links[i],'click',bln.showTab,false);
						bln.fixSafari(links[i]);						
					} else {
						bln.cssJs('add',links[i].parentNode,bln.hideTabClass);
					  }
					if (vis && !isset) {
						bln.cssJs('add',tab,bln.showClass);
						bln.currentPanel=tab;
						bln.cssJs('add',links[i],bln.currentClass);
						bln.currentLink=links[i];						
						isset=true;
					}
				}
			}
		}
	},
	showTab:function(e){
		var section=bln.getTarget(e);
		var toshow=section.getAttribute('href').toString().match(/#(.*)/)[1];
		if(bln.currentPanel && bln.currentLink){
			bln.cssJs('remove',bln.currentPanel,bln.showClass);
			bln.cssJs('remove',bln.currentLink,bln.currentClass);
		}
		if(document.getElementById(toshow)){
			toshow=document.getElementById(toshow);
			bln.cssJs('add',toshow,bln.showClass);
			bln.cssJs('add',section,bln.currentClass);
			bln.currentPanel=toshow;
			bln.currentLink=section;
		}
		bln.cancelClick(e);
	},
	fixSafari:function(node){
//		node.onclick = function() { return false; }; // Safari
	},
	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=!bln.cssJs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!bln.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':
				return new RegExp("(^|\\s)" + c1 + "(\\s|$)").test(o.className)
			break;
		}
	}
}
bln.addEvent(window, 'load', bln.init, false);