require.def("domplate/tabView",["domplate/domplate","core/lib","core/trace"],function(e,c,h){with(e){var f=domplate({tag:TABLE({"class":"tabView",cellpadding:0,cellspacing:0,_repObject:"$tabView"},TBODY(TR({"class":"tabViewRow"},TD({"class":"tabViewCol",valign:"top"},TAG("$tabList",{tabView:"$tabView"}))))),tabList:DIV({"class":"tabViewBody",onclick:"$onClickTab"},DIV({"class":"$tabView.id\\Bar tabBar"}),DIV({"class":"$tabView.id\\Bodies tabBodies"})),tabHeaderTag:A({"class":"$tab.id\\Tab tab",view:"$tab.id", _repObject:"$tab"},"$tab.label"),tabBodyTag:DIV({"class":"tab$tab.id\\Body tabBody",_repObject:"$tab"}),hideTab:function(){return false},onClickTab:function(a){a=$.event.fix(a||window.event);this.getTabView(a.target).onClickTab(a)},getTabView:function(a){return c.getAncestorByClass(a,"tabView").repObject}});e=function(a){this.id=a;this.tabs=[];this.listeners=[]};e.prototype={appendTab:function(a){this.tabs.push(a);a.tabView=this;return a},getTab:function(a){return(a=c.getElementByClass(this.element, a+"Tab"))?a.repObject:null},selectTabByName:function(a){(a=c.getElementByClass(this.element,a+"Tab"))&&this.selectTab(a)},addListener:function(a){this.listeners.push(a)},removeListener:function(a){c.remove(this.listeners,a)},onClickTab:function(a){(a=c.getAncestorByClass(a.target,"tab"))&&this.selectTab(a)},selectTab:function(a){if(c.hasClass(a,"tab"))if(!c.hasClass(a,"selected")){var d=a.getAttribute("view");if(d){var b=c.getAncestorByClass(a,"tabViewBody");if(b.selectedTab){b.selectedTab.removeAttribute("selected"); b.selectedBody.removeAttribute("selected");c.removeClass(b.selectedTab,"selected");c.removeClass(b.selectedBody,"selected")}var g=c.getElementByClass(b,"tab"+d+"Body");g||h.error("TabView.selectTab; Missing tab body",a);b.selectedTab=a;b.selectedBody=g;b.selectedTab.setAttribute("selected","true");b.selectedBody.setAttribute("selected","true");c.setClass(b.selectedBody,"selected");c.setClass(b.selectedTab,"selected");this.updateTabBody(b,d)}}},updateTabBody:function(a){a=a.selectedTab.repObject;if(!a._body._updated){a._body._updated= true;a.bodyTag&&a.bodyTag.replace({tab:a},a._body);a&&a.onUpdateBody&&a.onUpdateBody(this,a._body);for(var d=0;d