function TabPanel(d,c,a,b){this.id=d;this.tabs=[];this.emsDataId=c;if(a)this.currentTab=a;else this.currentTab=0;if(b)this.tabClick=b;this.lastKeycode=0;this.loading=true}TabPanel.prototype.init=function(){this.node=Dea.Get(this.id);var b=this;Dea.browser.addEvent(this.node,"click",function(a){handleTabPanelClickEvent(a,b)},false);Dea.browser.addEvent(this.node,"keydown",function(a){handleTabPanelKeyDownEvent(a,b)},true);Dea.browser.addEvent(this.node,"keypress",function(a){handleTabPanelKeyPressEvent(a,b)},true);for(var a=0;a<this.tabs.length;a++){this.tabs[a].init();if(this.tabClick)this.tabs[a].on_click=this.tabClick}selectTabPanel(this,this.currentTab);this.loading=false};TabPanel.prototype.add=function(a){this.tabs[this.tabs.length]=a};function Tab(b,a,c){this.tabId=b;this.panelId=a;this.liId=c;this.nodeLastFocus=null}Tab.prototype.init=function(){};function nextTabPanel(a){a.currentTab<a.tabs.length-1&&selectTabPanel(a,a.currentTab+1)}function previousTabPanel(a){a.currentTab>0&&selectTabPanel(a,a.currentTab-1)}Tab.prototype.select=function(b,a){Dea.Css.addClass(this.tabId,"selected");Dea.Css.addClass(this.liId,"selected");Dea.setDisplay(this.panelId,"block");Dea.Get(this.tabId).tabIndex=0;if(this.on_click&&b===false)(!a||a===false)&&this.on_click()};Tab.prototype.unselect=function(){Dea.Css.removeClass(this.tabId,"selected");Dea.Css.removeClass(this.liId,"selected");Dea.setDisplay(this.panelId,"none");Dea.Get(this.tabId).tabIndex=-1};function selectTabPanel(a,b,c){if(b>=0&&b<a.tabs.length){if(Dea.Get(a.emsDataId))Dea.Get(a.emsDataId).value=b;a.tabs[a.currentTab].unselect();a.currentTab=b;a.tabs[a.currentTab].select(a.loading,c);if(a.tabs[a.currentTab].nodeLastFocus)a.tabs[a.currentTab].nodeLastFocus.focus();else try{Dea.Get(a.tabs[a.currentTab].tabId).focus()}catch(d){}}}function indexOfNodeInTabList(d,b){for(var c=-1,a=0;a<b.tabs.length;a++)if(d==Dea.Get(b.tabs[a].tabId))c=a;return c}function nextTab(c,b){var a=indexOfNodeInTabList(c,b);if(a>=0&&a<b.tabs.length-1){a++;selectTabPanel(b,a);Dea.Get(b.tabs[a].tabId).focus()}}function previousTab(c,b){var a=indexOfNodeInTabList(c,b);if(a>0){a--;selectTabPanel(b,a);Dea.Get(b.tabs[a].tabId).focus()}}function isNodeInTabList(d,c){for(var a=false,b=0;!a&&b<c.tabs.length;b++)if(d==Dea.Get(c.tabs[b].tabId))a=true;return a}function handleTabPanelKeyPressEvent(b){var a=b||window.event;switch(a.keyCode){case Dea.Keys.PAGEUP:case Dea.Keys.PAGEDOWN:if(a.ctrlKey&&!a.altKey&&!a.shiftKey)return Dea.browser.stopPropagation(a);break;case Dea.Keys.TAB:if(a.ctrlKey&&!a.altKey)return Dea.browser.stopPropagation(a)}}function handleTabPanelKeyDownEvent(e,b){var a=e||window.event,c=!a.ctrlKey&&!a.shiftKey&&!a.altKey,d=a.ctrlKey&&!a.shiftKey&&!a.altKey;switch(a.keyCode){case Dea.Keys.LEFT:case Dea.Keys.UP:if(isNodeInTabList(Dea.browser.target(a),b)&&c){previousTab(Dea.browser.target(a),b);return Dea.browser.stopPropagation(e)}break;case Dea.Keys.RIGHT:case Dea.Keys.DOWN:if(isNodeInTabList(Dea.browser.target(a),b)&&c){nextTab(Dea.browser.target(a),b);return Dea.browser.stopPropagation(a)}break;case Dea.Keys.PAGEDOWN:if(d){nextTabPanel(b);return Dea.browser.stopPropagation(a)}break;case Dea.Keys.PAGEUP:if(d){previousTabPanel(b);return Dea.browser.stopPropagation(a)}break;case Dea.Keys.HOME:if(c){selectTabPanel(b,0);return Dea.browser.stopPropagation(a)}case Dea.Keys.END:if(c){selectTabPanel(b,b.tabs.length-1);return Dea.browser.stopPropagation(a)}case Dea.Keys.TAB:if(a.ctrlKey&&!a.altKey){if(a.shiftKey)previousTabPanel(b);else nextTabPanel(b);return Dea.browser.stopPropagation(a)}}return true}function handleTabPanelClickEvent(c,a){var d=c||window.event,b=indexOfNodeInTabList(Dea.browser.target(d),a);if(b>=0){selectTabPanel(a,b);Dea.Get(a.tabs[b].tabId).focus();return false}return true}function handleInputFocusEvent(a,b){var c=a||window.event;b.nodeLastFocus=Dea.browser.target(c)}
