function initTabs() { var _fadeSpeed = 200; var _switchTime = 4000; var sets = document.getElementsByTagName("ul"); for (var i = 0; i < sets.length; i++) { if (hasClass(sets[i],"tabset")) { (function(i){ var _autoTimer; var currentIndex = 0; var linkIndex = 0; var tabs = []; var links = sets[i].getElementsByTagName("a"); for (var j = 0; j < links.length; j++) { if (hasClass(links[j],"tab") != -1) { links[j].ind = linkIndex++; tabs.push(links[j]); links[j].tabs = tabs; var c = document.getElementById(links[j].href.substr(links[j].href.indexOf("#") + 1)); //reset all tabs on start if (c) if (links[j].className.indexOf("active") != -1) { c.style.position = "static"; c.style.top = "0"; } else { c.style.position = "absolute"; c.style.top = "-9999px"; } links[j].onclick = function () { if(_autoTimer) clearInterval(_autoTimer); currentIndex = this.ind; var c = document.getElementById(this.href.substr(this.href.indexOf("#") + 1)); if (c) { //reset all tabs before change for (var i = 0; i < this.tabs.length; i++) { var tabblock = document.getElementById(this.tabs[i].href.substr(this.tabs[i].href.indexOf("#") + 1)); var tlink = this.tabs[i]; var clink = this; removeClass(tlink.parentNode,"active") if(tabblock.offsetWidth) { fadeBlock(tabblock, false,function(){ // fade out prev tabblock.style.position = "absolute"; tabblock.style.top = "-9999px"; // fade in next c.style.position = "static"; c.style.top = "0"; fadeBlock(c, true,function(){ addClass(clink.parentNode,"active"); autoRotate(); }); }); } } return false; } } } } // autorotation function nextTab() { if(currentIndex < tabs.length-1) currentIndex++; else currentIndex = 0; clickObject(tabs[currentIndex]); } function autoRotate() { if(_autoTimer) clearInterval(_autoTimer); if (hasClass(sets[i],"autorotate")) { _autoTimer = setInterval(nextTab,_switchTime); } } autoRotate(); })(i); } } function fadeBlock(block, state, fcallback) { if(block) { var ie = (window.attachEvent && !window.opera ? 1 : 0); var obj = block.style; var step = 5;//(ie ? 100 : 5); var fade; // init object styles obj.visibility = "visible"; obj.display = "block"; if(state) { if(ie) obj.filter="alpha(opacity=0)"; else obj.opacity = "0"; block.style.display = 'block'; fade = 0; } else { if(ie) obj.filter="alpha(opacity=100)"; else obj.opacity = "1"; fade = 100; } // fade animation function fadeObj() { if(state) { if(fade<100) { fade+=step; if(ie) obj.filter="alpha(opacity="+fade+")"; else obj.opacity=(fade/100); } else { clearInterval(anim); if(ie) obj.filter="none"; if(fcallback && typeof fcallback === 'function') { fcallback(); } } } else { if(fade>0) { fade-=step; if(ie) obj.filter="alpha(opacity="+fade+")"; else obj.opacity=(fade/100); } else { clearInterval(anim); block.style.display = 'none'; if(fcallback && typeof fcallback === 'function') { fcallback(); } } } } var anim = setInterval(fadeObj,10); } }; function clickObject(obj) { var target=obj; if(document.dispatchEvent) { // W3C var oEvent = document.createEvent( "MouseEvents" ); oEvent.initMouseEvent("click", true, true,window, 1, 1, 1, 1, 1, false, false, false, false, 0, target); target.dispatchEvent( oEvent ); } else if(document.fireEvent) { // IE target.fireEvent("onclick"); } } function hasClass(obj,cname) { return (obj.className ? obj.className.match(new RegExp('(\\s|^)'+cname+'(\\s|$)')) : false); } function addClass(obj,cname) { if (!hasClass(obj,cname)) obj.className += " "+cname; } function removeClass(obj,cname) { if (hasClass(obj,cname)) obj.className=obj.className.replace(new RegExp('(\\s|^)'+cname+'(\\s|$)'),' '); } } if (window.addEventListener) window.addEventListener("load", initTabs, false); else if (window.attachEvent) window.attachEvent("onload", initTabs);