// Incordia JavaScript
// Generated 2008-02-18
Incordia.Packages.create("CDON.ui.Tab");CDON.ui.Tab=Incordia.dom.Event.Producer.extend({element:null,loaded:false,_onLoadActiveItem:null,tabs:null,activeItem:null,constructor:function(element,args){this.args=Incordia.merge(CDON.ui.Tab.defaults,args);this.registerEvent("changeFocus");this.tabs={};this.element=element},load:function(){this.element=$(this.element);var result=this._gatherTabs();if(result!=0)return;this._createList();this.loaded=true;if(this._onLoadActiveItem){this.focus(this._onLoadActiveItem);return}if(this.args.startNode){this.focus(this.args.startNode);return}},_createList:function(){var firstTab,lastTab;while(this.element.firstChild)this.element.removeChild(this.element.firstChild);var holder=document.createDocumentFragment();var list=document.createElement("div");list.className="tab-wrapper";var content=document.createElement("div");content.className="data-wrapper";var _item=null;for(var itemName in this.tabs){var item=this.tabs[itemName];this.switchClass(item.node,"clickable");list.appendChild(item.node);content.appendChild(item.content);item.disable();addEvent(item.node,"click",item.enable.bind(item));if(!firstTab)firstTab=item;lastTab=item}if(firstTab)firstTab.enable();this.switchClass(firstTab.node,"first");this.switchClass(lastTab.node,"last");holder.appendChild(list);holder.appendChild(content);this.element.appendChild(holder)},_gatherTabs:function(){if(!this.element)return-4;var nextElement=function(node,requireTag){for(var child=node.nextSibling;child!=null;child=child.nextSibling){if(child.nodeType==1){if(typeof(requireTag)=="undefined"||requireTag==child.tagName.toLowerCase())return child;else return null}};return null};var _completeTabs=0;for(var node=this.element.firstChild;node!=null;node=node.nextSibling){if(node.nodeType!=1){continue}if(node&&node.className.search(/(?:\s|^)tab(?:\s|$)/)>-1){var content=nextElement(node,"div");if(content==null||content.className.search(/(?:\s|^)data(?:\s|$)/)==-1)return-2;if(!node.id)node.id="-unnamedTab-"+(CDON.ui.Tab._counter);var tab={name:node.id,node:node,content:content,instance:this,enable:function(){if(this.instance.activeItem==this)return;this.instance.dispatchEvent("changeFocus",{oldTab:this.instance.activeItem,newTab:this});if(this.instance.activeItem)this.instance.activeItem.disable();this.instance.switchClass(this.node,"active","inactive");this.content.style.display="";this.instance.activeItem=this},disable:function(){this.instance.switchClass(this.node,"inactive","active");this.content.style.display="none"}};this.tabs[tab.name]=tab;node=content;CDON.ui.Tab._counter+=1;_completeTabs++}else return-1}return _completeTabs>0?0:-3},focus:function(item){if(!this.loaded){this._onLoadActiveItem=item;return}if(typeof(item)=="string")item=this.tabs[item];if(item)item.enable()},switchClass:function(element,add,remove){var cls=element.className;if(remove){var re=new RegExp("\\b"+remove+"\\b","g");cls=cls.replace(re,"")}if(add)cls+=" "+add;element.className=cls},global:{_counter:0,defaults:{startNode:""}}});