
Ext.namespace("Ext.ux.application.controllers.categories");Ext.ux.application.controllers.categories=Ext.extend(Ext.util.Observable,{constructor:function(config,viewCmp){Ext.ux.application.controllers.categories.superclass.constructor.call(this,config);this.viewCmp=viewCmp;this.urlConfig=Ext.value(config.urlConfig,null);this.activeTab=Ext.value(config.activeTab,0);},getConfig:function(callback){if(this.urlConfig){Ext.Ajax.request({url:this.urlConfig,params:{href:window.location.pathname},success:this.configReceived.createDelegate(this,[callback],true),disableCaching:true});}},configReceived:function(tsp,opts,callback){this.config=Ext.util.JSON.decode(tsp.responseText);callback();},getArborescenceForPath:function(url,idRoot,callback,scope,menuCmp){var callback=callback!=undefined?callback.createDelegate(scope,[menuCmp]):Ext.emptyFn;this.arborescenceStore=new Ext.data.JsonStore({autoLoad:{url:url,params:{idRoot:idRoot,view:this.viewCmp.viewMode},callback:callback,scope:scope},url:url,root:"arborescence",idProperty:"id",fields:["id","link","label","leaf","cls","openmodal","drop"]});}});Ext.namespace("Ext.ux.application.views.categories");Ext.ux.application.views.categories=Ext.extend(Ext.TabPanel,{absoluteCmpQueue:[],border:false,animCollapse:true,animScroll:true,enableTabScroll:true,autoWidth:true,defaults:{xtype:"toolbar",cls:"ux-sous-categorie-container",defaults:{cls:"ux-sous-categorie-item"}},constructor:function(config){this.controller=new Ext.ux.application.controllers.categories(config,this);this.addEvents({menushow:true});Ext.ux.application.views.categories.superclass.constructor.call(this,Ext.apply({},config));},afterRender:function(){Ext.ux.application.views.categories.superclass.afterRender.call(this,arguments);this.controller.getConfig(this.updateView.createDelegate(this));this.mon(this.stripWrap,{scope:this,mouseover:function(e){e.button=0;this.onStripMouseDown(e);Ext.getBody().on({scope:this,mouseover:this.onReleaseTab});if(this.menuOpened&&this.menuOpened!==false){this.menuOpened.hide();this.menuOpened=false;}},click:function(e){if(e.button!==0)
return;e.preventDefault();var t=this.findTargets(e);if(t&&t.item&&t.item.url)
window.open(t.item.url,t.item.target,"",false);}});},onReleaseTab:function(e){if(!this.menuOpened&&(e.getPageY()<this.el.getY()-25||e.getPageY()>parseInt(this.el.getY()+this.el.getHeight()+25))){Ext.getBody().un("mouseover",this.onReleaseTab,this);this.deferedReleaseTab.defer(250,this);}},deferedReleaseTab:function(){this.setActiveTab(this.pageTab);},updateView:function(){var activeTabIndex=0;var aTemplate=new Ext.Template("<a  qtip=\"{qtip}\" class=\"ux-sous-categorie-item-link\" href=\"{url}\" target=\"{target}\" >{label}</a>");var iconTemplate=new Ext.Template("<img class=\"ux-categorie-icon\"  width=\"{width}\" height=\"{height}\" alt=\"{alt}\" src=\"{fakeSrc}\" style=\"background: url('{src}')\" />");Ext.each(this.controller.config.view.tabs.tab,function(tab,tabIndex){if(!tab.icon&&!tab.label)
return;if(tab["@attributes"].current)
activeTabIndex=tabIndex;var tabEl={cls:"ux-sous-categorie-container ux-niveau-"+tabIndex,title:tab.label?tab.label:iconTemplate.apply({width:24,height:26,alt:tab.icon["@attributes"].alt,src:tab.icon["@attributes"].url,fakeSrc:Ext.BLANK_IMAGE_URL})};if(tab.items){tabEl.items=["-"];Ext.each(tab.items.item,function(item){if(item["@attributes"].visible=="0")
return;if(item["@attributes"].position&&item["@attributes"].position=="right"){tabEl.items.push('->');tabEl.items.push('-');return;}
var text=item.label?item.label:iconTemplate.apply({width:16,height:16,alt:item.icon["@attributes"].alt,src:item.icon["@attributes"].url});var hasMenu=(item.link&&item.link["@attributes"].target=="ws-external")||(item.items&&Ext.isArray(item.items.item));tabEl.items.push({xtype:hasMenu?"button":"tbtext",text:hasMenu||!item.link||item.link["@attributes"].target=="ws-external"?text:aTemplate.apply({url:item.link["@attributes"].url,target:Ext.value(item.link["@attributes"].target,"_self"),label:text,qtip:item.tip||""}),tooltip:item.tip||"",cls:"ux-sous-categorie-item "+item["@attributes"]["class"],menu:hasMenu?item.link&&item.link["@attributes"].target=="ws-external"?this.addDynamicalMenu(item.link["@attributes"].url):this.addStaticMenu(item.items.item):null,listeners:{scope:this,menushow:function(b,menu){this.menuOpened=menu;b.menu.doLayout();},menuhide:function(){this.menuOpened=false;}}});tabEl.items.push("-");},this);}
this.add(tabEl);if(tab.link){this.items.get(tabIndex).url=tab.link["@attributes"].url;this.items.get(tabIndex).target=tab.link["@attributes"]?Ext.value(tab.link["@attributes"].target,"_blank"):"_blank";try{Ext.fly(this.items.get(tabIndex).tabEl).select("span.x-tab-strip-text").first().update(aTemplate.apply({url:this.items.get(tabIndex).url,target:this.items.get(tabIndex).target,label:tabEl.title,qtip:item.tip||""}));}catch(e){}}},this);this.setActiveTab(activeTabIndex);this.pageTab=activeTabIndex;this.totallyRendered=true;this.doLayout();if(!Ext.isEmpty(this.absoluteCmpQueue)){Ext.each(this.absoluteCmpQueue,function(cmp){this.addAbsoluteCmp(cmp);},this);}
this.doLayout();},addStaticMenu:function(items,parentItem){var menu=new Ext.menu.Menu({loaded:false,showSeparator:false,shadow:false,defaults:{hideOnClick:false,iconCls:"ux-hide-icon"}});if(parentItem){if(items&&!Ext.isArray(items))
items=[items];parentItem.items=null;items.unshift(parentItem);}
Ext.each(items,function(item,index){if(item.label){menu.addItem({text:item.label,href:item.items&&item.items.item?null:item.link?item.link["@attributes"].url:null,menu:item.items&&item.items.item?this.addStaticMenu(item.items.item,item):null,cls:parentItem&&index==0?'ux-root':'',itemCls:'x-menu-item '+item["@attributes"]["class"]});}},this);return menu;},addDynamicalMenu:function(url,root){return new Ext.menu.Menu({url:url,root:root,loaded:false,showSeparator:false,shadow:false,defaults:{hideOnClick:false,iconCls:"ux-hide-icon"},listeners:{scope:this,show:function(menu){if(!menu.loaded){menu.addClass("ux-loading");this.controller.getArborescenceForPath(menu.url,menu.root,this.updateDynamicalMenu,this,menu);}},hide:function(menu){menu.removeAll(true);menu.addClass("ux-loading");menu.loaded=false;}}});},updateDynamicalMenu:function(menu){menu.removeClass("ux-loading");this.controller.arborescenceStore.each(function(record){var m=menu.add({cls:record.get("cls"),text:record.get("label"),menu:record.get("leaf")?false:this.addDynamicalMenu(menu.url,record.get("id")),href:record.get("leaf")?Ext.value(record.get("link"),null):null,handler:record.get("openmodal")?this.openModal.createDelegate(this,[record.get("openmodal")]):Ext.emptyFn});if(record.get("drop"))
m.el.set({"data-drop":record.get("drop")});},this);menu.loaded=true;this.fireEvent("menushow");menu.doLayout();},openModal:function(url){Ext.Ajax.request({url:url,success:function(tsp){var cfg=Ext.decode(tsp.responseText);Ext.MessageBox.buttonText.cancel="Annuler";Ext.MessageBox.show(Ext.apply({shadow:false,width:350,buttons:Ext.MessageBox.OKCANCEL,closable:false,fn:function(btn,text,cfg){text=text.replace("/","").replace(/"\\"/,"");if(btn=="ok"){var url=Ext.isEmpty(text)?cfg.submitUrl:cfg.submitUrl+"/"+text;window.location.href=url+"?referer="+window.location.href;}}},cfg));}});},addAbsoluteCmp:function(cmp){if(this.totallyRendered){cmp.render(this.el);}else
this.absoluteCmpQueue.push(cmp);}});Ext.reg("ux-categories",Ext.ux.application.views.categories);

