
jQuery.fn.initBogoTabs=function(tabdefs,props){props=jQuery.extend({activeLabelClass:'bogoTabsActiveLabel',inactiveLabelClass:'bogoTabsInactiveLabel',debugBogoTabs:false},props);var self=this;self.dbgdiv=null;function dbg(msg){if(self.dbgdiv)self.dbgdiv.append("BogoTabs: "+msg+"<br/>");};if(props.debugBogoTabs){this.after("<div id='bogoTabsDebugDiv'>Debugging area</div>");self.dbgdiv=jQuery('#bogoTabsDebugDiv');self.dbgdiv.css('border','1px dashed #000');dbg("debugging activated.");}
function TabsInnerHolder(){var self=this;self.buttons=[];self.funcs={};self.currentTab=null;};self.holder=new TabsInnerHolder();function switchTabs(tabID){if(tabID[0]!='#')tabID='#'+tabID;tabID=tabID.replace(/-tabtrigger/,'');dbg('switchTabs('+tabID+')');if(self.currentTab)
{var oldid=self.currentTab.attr('id');if('#'+oldid==tabID)
{dbg("Skipping tab activated: tab '"+tabID+"' already active.");return false;}
self.currentTab.hide();var oh=self.holder.funcs['#'+oldid];if(oh.onhide){dbg("Calling onhide handler for tab "+oldid+".");(oh.onhide)(self.currentTab);}}
var tab2show=null;for(var key in self.holder.buttons){var span=self.holder.buttons[key];if(key==tabID){tab2show=jQuery(key);span.removeClass(props.inactiveLabelClass).addClass(props.activeLabelClass);}else{span.removeClass(props.activeLabelClass).addClass(props.inactiveLabelClass);}}
var funcs=self.holder.funcs[tabID];if(funcs.onselect){(funcs.onselect)(tab2show);}
tab2show.show();if(funcs.onshow){dbg("Calling onshow handler for tab "+tabID+".");(funcs.onshow)(tab2show);}
self.currentTab=tab2show;return false;};var tab2select=null;for(var key in tabdefs){if(!tab2select)tab2select=key;var tab=jQuery(key);var tabdef=tabdefs[key];if(tabdef['selected'])tab2select=key;tab.hide();this.append(tab);var lbl=jQuery("<span/>");self.holder.buttons[key]=lbl;self.holder.funcs[key]={'onselect':tabdef.onselect,'onshow':tabdef.onshow,'onhide':tabdef.onhide};tab[0].activateTab=function(){dbg(key+": activateTab(): "+this.id);return switchTabs(this.id);};lbl[0].tabElem=tab[0];lbl.html(tabdef['label']).css('cursor','pointer');lbl.click(function(){return this.tabElem.activateTab();});this.before(lbl);}
switchTabs(tab2select);};
