/* Yetii - Yet (E)Another Tab Interface Implementation version 1.5 http://www.kminek.pl/lab/yetii/ Copyright (c) 2007-2008 Grzegorz Wojcik Code licensed under the BSD License: http://www.kminek.pl/bsdlicense.txt */ function Yetii() { this.defaults = { id: null, active: 1, interval: null, wait: null, persist: null, tabclass: 'tab', activeclass: 'active', callback: null, leavecallback: null }; this.activebackup = null; for (var n in arguments[0]) { this.defaults[n]=arguments[0][n]; }; this.getTabs = function() { var retnode = []; var elem = document.getElementById(this.defaults.id).getElementsByTagName('*'); var regexp = new RegExp("(^|\\s)" + this.defaults.tabclass.replace(/\-/g, "\\-") + "(\\s|$)"); for (var i = 0; i < elem.length; i++) { if (regexp.test(elem[i].className)) retnode.push(elem[i]); } return retnode; }; this.links = document.getElementById(this.defaults.id + '-nav').getElementsByTagName('a'); this.listitems = document.getElementById(this.defaults.id + '-nav').getElementsByTagName('li'); this.show = function(number) { for (var i = 0; i < this.tabs.length; i++) { this.tabs[i].style.display = ((i+1)==number) ? 'block' : 'none'; if ((i+1)==number) { this.addClass(this.links[i], this.defaults.activeclass); this.addClass(this.listitems[i], this.defaults.activeclass + 'li'); } else { this.removeClass(this.links[i], this.defaults.activeclass); this.removeClass(this.listitems[i], this.defaults.activeclass + 'li'); } } if (this.defaults.leavecallback && (number != this.activebackup)) this.defaults.leavecallback(this.defaults.active); this.activebackup = number; this.defaults.active = number; if (this.defaults.callback) this.defaults.callback(number); }; this.rotate = function(interval) { this.show(this.defaults.active); this.defaults.active++; if (this.defaults.active > this.tabs.length) this.defaults.active = 1; var self = this; if (this.defaults.wait) clearTimeout(this.timer2); this.timer1 = setTimeout(function(){self.rotate(interval);}, interval*1000); }; this.next = function() { this.defaults.active++; if(this.defaults.active > this.tabs.length) this.defaults.active = 1; this.show(this.defaults.active); }; this.previous = function() { this.defaults.active--; if(!this.defaults.active) this.defaults.active = this.tabs.length; this.show(this.defaults.active); }; this.gup = function(name) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if (results == null) return null; else return results[1]; }; this.parseurl = function(tabinterfaceid) { var result = this.gup(tabinterfaceid); if (result==null) return null; if (parseInt(result)) return parseInt(result); if (document.getElementById(result)) { for (var i=0;i