
String.localizedStrings={};String.registerLocalizedStrings=function(o,a){if(a){if(!String.localizedStrings[a]){String.localizedStrings[a]={};}
for(k in o){String.localizedStrings[a][k]=o[k];}}
for(k in o){String.localizedStrings[k]=o[k];}}
String.prototype.lc=function(a){var s;if(a){if(String.localizedStrings&&String.localizedStrings[a]&&(s=String.localizedStrings[a][this])){return s;}}
if(String.localizedStrings&&(s=String.localizedStrings[this])){return s;}
return this.toString();}
var Module=function(){this.cp=new Ext.state.CookieProvider();this.plugins=[];}
Module.prototype={ctlId:function(id){return'mod-'+this.sysname+'-'+this.rand+'-'+id;},activate:function(id){var cmp=Ext.getCmp(this.ctlId(id));if(cmp!=null){cmp.show();return true;}
else{return false;}},overlay:null,overlayLoaded:false,plugins:null,registerplugin:function(plugin){this.plugins.push(plugin);}};
var ModuleManager=function(){}
ModuleManager.prototype={modules:{}}
ModuleManager.register=function(module,obj){var mm=ModuleManager.getInstance();obj.sysname=module;mm.modules[module]=obj;}
ModuleManager.action=function(module,action,params){var mm=ModuleManager.getInstance();if(mm.modules[module]==null){alert('Module ['+module+'] not registered.'.lc());return;}
if(mm.modules[module].overlay!=null&&mm.modules[module].overlayLoaded==false){var wt=Ext.Msg.wait('Loading module...'.lc(),'Loading'.lc());ScriptLoader.load(mm.modules[module].overlay,(function(){wt.hide();mm.modules[module].overlayLoaded=true;ModuleManager.executeAction(module,action,params);}).createDelegate(this));}
else{ModuleManager.executeAction(module,action,params);}}
ModuleManager.executeAction=function(module,action,params){var mm=ModuleManager.getInstance();if(mm.modules[module][action]==null){alert('Module ['+module+'] doesn\'t implement action ['+action+'].'.lc());return null;}
else{return mm.modules[module][action](params);}}
ModuleManager.instance=new ModuleManager();ModuleManager.getInstance=function(){return ModuleManager.instance;}
var Plugin=function(){Plugin.superclass.constructor.call(this);}
Ext.extend(Plugin,Module,{action:function(action,params,callback){if(this.overlay!=null&&this.overlayLoaded==false){var wt=Ext.Msg.wait('Loading plugin...'.lc(),'Loading'.lc());ScriptLoader.load(this.overlay,(function(){wt.hide();this.overlayLoaded=true;var result=this.executeAction(action,params);if(callback)callback(result);}).createDelegate(this));}
else{var result=this.executeAction(action,params);if(callback)callback(result);}},executeAction:function(action,params){if(this[action]==null){alert('Plugin doesn\'t implement action ['+action+'].'.lc());}
else{return this[action](params);}},load:function(){}});
var ScriptManager=function(){}
ScriptManager.prototype.scripts={};ScriptManager.prototype.timeout=3000;ScriptManager.getInstance=function(onload){var obj=new ScriptManager();obj.onload=onload;return obj;}
ScriptManager.prototype={scripts:{},timeout:3000,add:function(){for(var i=0;i<arguments.length;i++){this.scripts[arguments[i]]=false;}},loaded:function(scr){this.scripts[scr]=true;for(k in this.scripts){if(!this.scripts[k]){return false;}}
if(this.onload){this.onload();}},load:function(){var scriptManager=this;for(scr in this.scripts){$.getScript(scr,function(data,textStatus){var url=this.url;var idx=url.indexOf('?');if(idx>-1){url=url.slice(0,idx);}
scriptManager.loaded(url);});}}}
var ScriptLoader={load:function(src,onload){jQuery.getScript(src,function(data,textStatus){var url=this.url;onload();});}}
Ext.ux.StoreLoader=function(){this.stores=[];this.maskEl=null;}
Ext.override(Ext.ux.StoreLoader,{add:function(store,params){if(!params){params={};}
store.addListener('load',this.onStoreLoad,this);store.addListener('loadexception',this.onStoreLoadException,this);this.stores.push({store:store,params:params});},onStoreLoad:function(store){store.removeListener('load',this.onStoreLoad,this);store.removeListener('loadexception',this.onStoreLoadException,this);var item=this.findNext(store);if(item!=null){if(this.mask)this.mask.show();item.store.load(item.params);}
else{if(this.mask)this.mask.hide();this.success();}},onStoreLoadException:function(store,options,response,e){},success:function(){},load:function(){var item=this.stores[0];if(this.maskEl!=null){this.mask=new Ext.LoadMask(this.maskEl,{});this.mask.show();}
item.store.load(item.params);},findNext:function(store){for(var i=1;i<this.stores.length;i++){if(this.stores[i-1].store==store){return this.stores[i];}}
return null;}});
Ext.BLANK_IMAGE_URL='/primal/pub/img/blank.gif';Ext.ux.handleError=function(response,title,fn){var data=Ext.util.JSON.decode(response.responseText);if(data['success']==false){Ext.Msg.show({title:title?title.lc():'Error',fn:fn?fn:null,msg:data['exception'],buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR,minWidth:200});return true;}
return false;}
Ext.ux.handleException=function(data,title,fn){if(data['success']==false){Ext.Msg.show({title:title?title.lc():'Error'.lc(),fn:fn?fn:null,msg:data['exception'],buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR,minWidth:200});return true;}
return false;}
Ext.override(Ext.tree.TreeEditor,{triggerEdit:function(node,defer){this.completeEdit();if(node.attributes.editable!==false){this.editNode=node;if(this.tree.autoScroll){Ext.fly(node.ui.getEl()).scrollIntoView(this.tree.body);}
var value=node.text||'';if(!Ext.isGecko&&Ext.isEmpty(node.text)){node.setText('&nbsp;');}
this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[node.ui.textNode,value]);return false;}}});Ext.override(Ext.tree.TreePanel,{getState:function(){var state=[];for(var id in this.nodeHash)
{var node=this.nodeHash[id];if(node.expanded)
{var path=node.getPath();var add=true;var parents=node.getOwnerTree();for(var i=0;i<parents.length;i++)
{state.remove(parents[i].getPath());if(!parents[i].expanded)add=false;}
if(add)
{state.push(node.getPath());}}}
return state;},applyState:function(state,config){this.getRootNode().expand();if(state&&state.length>0)
{for(var i=0;i<state.length;i++)
{var path=state[i];this.expandPath(path);}
return true;}},storeState:function(){this.innerState=this.getState();},restoreState:function(){if(this.innerState){this.applyState(this.innerState);}}});Ext.ux.mergeMenu=function(menu1,menu2){for(var i=0;i<menu1.items.getCount();i++){var item1=menu1.items.get(i);var found=null;for(var t=0;t<menu2.items.getCount();t++){var item2=menu2.items.get(t);if(item2.text==item1.text){found=item2;break;}}
if(found){if(item1.menu&&found.menu){for(var j=0;j<found.menu.items.getCount();j++){item1.menu.add(found.menu.items.get(j));}
found._processed=true;}}}
for(var t=0;t<menu2.items.getCount();t++){var item2=menu2.items.get(t);if(!item2._processed){menu1.add(item2);}}
return menu1;}
Ext.grid.CheckColumn=function(config){Ext.apply(this,config);if(!this.id){this.id=Ext.id();}
this.renderer=this.renderer.createDelegate(this);};Ext.grid.CheckColumn.prototype={init:function(grid){this.grid=grid;this.grid.on('render',function(){var view=this.grid.getView();view.mainBody.on('mousedown',this.onMouseDown,this);},this);},onMouseDown:function(e,t){if(t.className&&t.className.indexOf('x-grid3-cc-'+this.id)!=-1){e.stopEvent();var index=this.grid.getView().findRowIndex(t);var record=this.grid.store.getAt(index);record.set(this.dataIndex,!record.data[this.dataIndex]);this.click(record,index);}},renderer:function(v,p,record){p.css+=' x-grid3-check-col-td';return'<div class="x-grid3-check-col'+(v?'-on':'')+' x-grid3-cc-'+this.id+'">&#160;</div>';},click:function(record,index){}};
Ext.tree.ColumnTree=Ext.extend(Ext.tree.TreePanel,{lines:false,borderWidth:Ext.isBorderBox?0:2,cls:'x-column-tree',onRender:function(){Ext.tree.ColumnTree.superclass.onRender.apply(this,arguments);this.headers=this.body.createChild({cls:'x-tree-headers'},this.innerCt.dom);var cols=this.columns,c;var totalWidth=0;for(var i=0,len=cols.length;i<len;i++){c=cols[i];totalWidth+=c.width;this.headers.createChild({cls:'x-tree-hd '+(c.cls?c.cls+'-hd':''),cn:{cls:'x-tree-hd-text',html:c.header},style:'width:'+(c.width-this.borderWidth)+'px;'});}
this.headers.createChild({cls:'x-clear'});this.headers.setWidth(totalWidth);this.innerCt.setWidth(totalWidth);}});Ext.tree.ColumnNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{focus:Ext.emptyFn,renderElements:function(n,a,targetNode,bulkRender){this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';var t=n.getOwnerTree();var cols=t.columns;var bw=t.borderWidth;var c=cols[0];n.cols=new Array();var text=n.text||(c.renderer?c.renderer(a[c.dataIndex],n,a):a[c.dataIndex]);n.cols[cols[0].dataIndex]=text;var buf=['<li class="x-tree-node"><div ext:tree-node-id="',n.id,'" class="x-tree-node-el x-tree-node-leaf ',a.cls,'">','<div class="x-tree-col" style="width:',c.width-bw,'px;">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow">','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on">','<a hidefocus="on" class="x-tree-node-anchor" href="',a.href?a.href:"#",'" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':"",'>','<span unselectable="on">',n.text||(c.renderer?c.renderer(a[c.dataIndex],n,a):a[c.dataIndex]),"</span></a>","</div>"];for(var i=1,len=cols.length;i<len;i++){c=cols[i];var text=(c.renderer?c.renderer(a[c.dataIndex],n,a):a[c.dataIndex]);n.cols[cols[i].dataIndex]=text;buf.push('<div class="x-tree-col ',(c.cls?c.cls:''),'" style="width:',c.width-bw,'px;">','<div class="x-tree-col-text">',(c.renderer?c.renderer(a[c.dataIndex],n,a):a[c.dataIndex]),"</div>","</div>");}
buf.push('<div class="x-clear"></div></div>','<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>");if(bulkRender!==true&&n.nextSibling&&n.nextSibling.ui.getEl()){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",n.nextSibling.ui.getEl(),buf.join(""));}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf.join(""));}
this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var cs=this.elNode.firstChild.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];this.anchor=cs[3];this.textNode=cs[3].firstChild;}});Ext.tree.ColumnTreeEditor=function(tree,config){config=config||{};var field=config.events?config:new Ext.form.TextField(config);Ext.tree.TreeEditor.superclass.constructor.call(this,field);this.tree=tree;this.addEvents('editcomplete');if(!tree.rendered){tree.on('render',this.initEditor,this);}else{this.initEditor(tree);}};Ext.extend(Ext.tree.ColumnTreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,editDelay:0,initEditor:function(tree){tree.on('beforeclick',this.beforeNodeClick,this);this.on('complete',this.updateNode,this);this.on('beforestartedit',this.fitToTree,this);this.on('startedit',this.bindScroll,this,{delay:10});this.on('specialkey',this.onSpecialKey,this);},fitToTree:function(ed,el){var td=this.tree.getTreeEl().dom,nd=el.dom;if(td.scrollLeft>nd.offsetLeft){td.scrollLeft=nd.offsetLeft;}
var w=Math.min(this.maxWidth,(td.clientWidth>20?td.clientWidth:td.offsetWidth)-Math.max(0,nd.offsetLeft-td.scrollLeft)-5);this.setSize(w,'');},triggerEdit:function(node,e){var obj=e.target;if(Ext.select(".x-tree-node-anchor",false,obj).getCount()==1){obj=Ext.select(".x-tree-node-anchor",false,obj).elements[0].firstChild;}else if(obj.nodeName=='SPAN'||obj.nodeName=='DIV'){obj=e.target;}else{return false;}
var colIndex=0;for(var i in node.cols){if(node.cols[i]==obj.innerHTML){colIndex=i;}}
var t=node.getOwnerTree();var f=false;for(var i=0;i<t.columns.length;i++){if(t.columns[i].dataIndex==colIndex&&t.columns[i].editable)
{f=true;}}
if(!f)return;this.completeEdit();this.editNode=node;this.editCol=obj;this.editColIndex=colIndex;this.startEdit(obj);if(obj.nodeName=='DIV'){var width=obj.offsetWidth;this.setSize(width);}},bindScroll:function(){this.tree.getTreeEl().on('scroll',this.cancelEdit,this);},beforeNodeClick:function(node,e){var sinceLast=(this.lastClick?this.lastClick.getElapsed():0);this.lastClick=new Date();if(sinceLast>this.editDelay&&this.tree.getSelectionModel().isSelected(node)){e.stopEvent();this.triggerEdit(node,e);return false;}else{this.completeEdit();}},updateNode:function(ed,value){this.tree.getTreeEl().un('scroll',this.cancelEdit,this);this.editNode.cols[this.editColIndex]=value;this.editNode.attributes[this.editColIndex]=value;this.editCol.innerHTML=value;this.fireEvent('editcomplete',this,this.editNode,value);},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus();}},onSpecialKey:function(field,e){var k=e.getKey();if(k==e.ESC){e.stopEvent();this.cancelEdit();}else if(k==e.ENTER&&!e.hasModifier()){e.stopEvent();this.completeEdit();}}});
Ext.ux.EditorPanel=Ext.extend(Ext.Panel,{initComponent:function(){this.addEvents('init','load');var obj=this;this.htmlPanel=new Ext.Panel({title:'HTML',layout:'fit',border:false,items:{xtype:'fckeditor',id:this.id+'_html',listeners:{load:function(){obj.fireEvent('load',this);},init:function(){obj.fireEvent('init',this);}}},listeners:{activate:function(p){obj.cp.set('editorpanel-tab',0);if(obj.fck.getIsLoaded()){obj.fck.setValue(obj.text.getValue());if(p.items.get(0).editorInstance){p.items.get(0).editorInstance.Focus();}}}}});this.textPanel=new Ext.Panel({title:'Plain',layout:'fit',border:false,items:{xtype:'textarea',name:this.id,id:this.id+'_text'},listeners:{activate:function(p){obj.cp.set('editorpanel-tab',1);if(obj.fck.getIsLoaded()){obj.text.setValue(obj.fck.getValue());}
p.items.get(0).focus();}}});this.cp=new Ext.state.CookieProvider();var tab=this.cp.get('editorpanel-tab',0);this.tabpanel=new Ext.TabPanel({activeTab:tab,tabPosition:'bottom',border:false,items:[this.htmlPanel,this.textPanel]});Ext.apply(this,{layout:'fit',items:this.tabpanel,border:false});this.fck=Ext.getCmp(this.id+'_html');this.text=Ext.getCmp(this.id+'_text');Ext.ux.EditorPanel.superclass.initComponent.call(this);},setValue:function(s){this.fck.setValue(s);this.text.setValue(s);},getValue:function(){if(this.tabpanel.getActiveTab()==this.htmlPanel){return this.fck.getValue();}
else if(this.tabpanel.getActiveTab()==this.textPanel){return this.text.getValue();}
else{return'';}},getEditorType:function(){if(this.tabpanel.getActiveTab()==this.htmlPanel){return'html';}
else if(this.tabpanel.getActiveTab()==this.textPanel){return'text';}
else{return'';}},setEditorType:function(type){this.tabpanel.setActiveTab(type=='html'?0:1);},disableEditorType:function(type){switch(type){case'html':this.htmlPanel.disable();break;case'text':this.textPanel.disable();break;}},enableEditorType:function(type){switch(type){case'html':this.htmlPanel.enable();break;case'text':this.textPanel.enable();break;}}});Ext.reg('editorpanel',Ext.ux.EditorPanel);
Ext.ns('Ext.ux.form');Ext.ux.form.DateTime=Ext.extend(Ext.form.Field,{dateValidator:null,defaultAutoCreate:{tag:'input',type:'hidden'},dtSeparator:' ',hiddenFormat:'Y-m-d H:i:s',otherToNow:true,timePosition:'right',timeValidator:null,timeWidth:100,dateFormat:'d.m.Y',timeFormat:'H:i:s',initComponent:function(){Ext.ux.form.DateTime.superclass.initComponent.call(this);var dateConfig=Ext.apply({},{id:this.id+'-date',format:this.dateFormat||Ext.form.DateField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,validator:this.dateValidator,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.dateConfig);this.df=new Ext.form.DateField(dateConfig);this.df.ownerCt=this;delete(this.dateFormat);var timeConfig=Ext.apply({},{id:this.id+'-time',format:this.timeFormat||Ext.form.TimeField.prototype.format,width:this.timeWidth,selectOnFocus:this.selectOnFocus,validator:this.timeValidator,listeners:{blur:{scope:this,fn:this.onBlur},focus:{scope:this,fn:this.onFocus}}},this.timeConfig);this.tf=new Ext.form.TimeField(timeConfig);this.tf.ownerCt=this;delete(this.timeFormat);this.relayEvents(this.df,['focus','specialkey','invalid','valid']);this.relayEvents(this.tf,['focus','specialkey','invalid','valid']);this.on('specialkey',this.onSpecialKey,this);},onRender:function(ct,position){if(this.isRendered){return;}
Ext.ux.form.DateTime.superclass.onRender.call(this,ct,position);var t;if('below'===this.timePosition||'bellow'===this.timePosition){t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-bottom:1px',cls:'ux-datetime-date'}]},{tag:'tr',children:[{tag:'td',cls:'ux-datetime-time'}]}]},true);}
else{t=Ext.DomHelper.append(ct,{tag:'table',style:'border-collapse:collapse',children:[{tag:'tr',children:[{tag:'td',style:'padding-right:4px',cls:'ux-datetime-date'},{tag:'td',cls:'ux-datetime-time'}]}]},true);}
this.tableEl=t;this.wrap=t.wrap({cls:'x-form-field-wrap'});this.wrap.on("mousedown",this.onMouseDown,this,{delay:10});this.df.render(t.child('td.ux-datetime-date'));this.tf.render(t.child('td.ux-datetime-time'));this.df.el.swallowEvent(['keydown','keypress']);this.tf.el.swallowEvent(['keydown','keypress']);if('side'===this.msgTarget){var elp=this.el.findParent('.x-form-element',10,true);if(elp){this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});}
var o={errorIcon:this.errorIcon,msgTarget:'side',alignErrorIcon:this.alignErrorIcon.createDelegate(this)};Ext.apply(this.df,o);Ext.apply(this.tf,o);}
this.el.dom.name=this.hiddenName||this.name||this.id;this.df.el.dom.removeAttribute("name");this.tf.el.dom.removeAttribute("name");this.isRendered=true;this.updateHidden();},adjustSize:Ext.BoxComponent.prototype.adjustSize,alignErrorIcon:function(){this.errorIcon.alignTo(this.tableEl,'tl-tr',[2,0]);},initDateValue:function(){this.dateValue=this.otherToNow?new Date():new Date(1970,0,1,0,0,0);},clearInvalid:function(){this.df.clearInvalid();this.tf.clearInvalid();},markInvalid:function(msg){this.df.markInvalid(msg);this.tf.markInvalid(msg);},beforeDestroy:function(){if(this.isRendered){this.wrap.removeAllListeners();this.wrap.remove();this.tableEl.remove();this.df.destroy();this.tf.destroy();}},disable:function(){if(this.isRendered){this.df.disabled=this.disabled;this.df.onDisable();this.tf.onDisable();}
this.disabled=true;this.df.disabled=true;this.tf.disabled=true;this.fireEvent("disable",this);return this;},enable:function(){if(this.rendered){this.df.onEnable();this.tf.onEnable();}
this.disabled=false;this.df.disabled=false;this.tf.disabled=false;this.fireEvent("enable",this);return this;},focus:function(){this.df.focus();},getPositionEl:function(){return this.wrap;},getResizeEl:function(){return this.wrap;},getValue:function(){return this.dateValue?new Date(this.dateValue):'';},isValid:function(){return this.df.isValid()&&this.tf.isValid();},isVisible:function(){return this.df.rendered&&this.df.getActionEl().isVisible();},onBlur:function(f){if(this.wrapClick){f.focus();this.wrapClick=false;}
if(f===this.df){this.updateDate();}
else{this.updateTime();}
this.updateHidden();this.validate();(function(){if(!this.df.hasFocus&&!this.tf.hasFocus){var v=this.getValue();if(String(v)!==String(this.startValue)){this.fireEvent("change",this,v,this.startValue);}
this.hasFocus=false;this.fireEvent('blur',this);}}).defer(100,this);},onFocus:function(){if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this);}},onMouseDown:function(e){if(!this.disabled){this.wrapClick='td'===e.target.nodeName.toLowerCase();}},onSpecialKey:function(t,e){var key=e.getKey();if(key===e.TAB){if(t===this.df&&!e.shiftKey){e.stopEvent();this.tf.focus();}
if(t===this.tf&&e.shiftKey){e.stopEvent();this.df.focus();}
this.updateValue();}
if(key===e.ENTER){this.updateValue();}},reset:function(){this.df.setValue(this.originalValue);this.tf.setValue(this.originalValue);},setDate:function(date){this.df.setValue(date);},setTime:function(date){this.tf.setValue(date);},setSize:function(w,h){if(!w){return;}
if('below'===this.timePosition){this.df.setSize(w,h);this.tf.setSize(w,h);if(Ext.isIE){this.df.el.up('td').setWidth(w);this.tf.el.up('td').setWidth(w);}}
else{this.df.setSize(w-this.timeWidth-4,h);this.tf.setSize(this.timeWidth,h);if(Ext.isIE){this.df.el.up('td').setWidth(w-this.timeWidth-4);this.tf.el.up('td').setWidth(this.timeWidth);}}},setValue:function(val){if(!val&&true===this.emptyToNow){this.setValue(new Date());return;}
else if(!val){this.setDate('');this.setTime('');this.updateValue();return;}
if('number'===typeof val){val=new Date(val);}
else if('string'===typeof val&&this.hiddenFormat){val=Date.parseDate(val,this.hiddenFormat);}
val=val?val:new Date(1970,0,1,0,0,0);var da;if(val instanceof Date){this.setDate(val);this.setTime(val);this.dateValue=new Date(Ext.isIE?val.getTime():val);}
else{da=val.split(this.dtSeparator);this.setDate(da[0]);if(da[1]){if(da[2]){da[1]+=da[2];}
this.setTime(da[1]);}}
this.updateValue();},setVisible:function(visible){if(visible){this.df.show();this.tf.show();}else{this.df.hide();this.tf.hide();}
return this;},show:function(){return this.setVisible(true);},hide:function(){return this.setVisible(false);},updateDate:function(){var d=this.df.getValue();if(d){if(!(this.dateValue instanceof Date)){this.initDateValue();if(!this.tf.getValue()){this.setTime(this.dateValue);}}
this.dateValue.setMonth(0);this.dateValue.setFullYear(d.getFullYear());this.dateValue.setMonth(d.getMonth(),d.getDate());}
else{this.dateValue='';this.setTime('');}},updateTime:function(){var t=this.tf.getValue();if(t&&!(t instanceof Date)){t=Date.parseDate(t,this.tf.format);}
if(t&&!this.df.getValue()){this.initDateValue();this.setDate(this.dateValue);}
if(this.dateValue instanceof Date){if(t){this.dateValue.setHours(t.getHours());this.dateValue.setMinutes(t.getMinutes());this.dateValue.setSeconds(t.getSeconds());}
else{this.dateValue.setHours(0);this.dateValue.setMinutes(0);this.dateValue.setSeconds(0);}}},updateHidden:function(){if(this.isRendered){var value=this.dateValue instanceof Date?this.dateValue.format(this.hiddenFormat):'';this.el.dom.value=value;}},updateValue:function(){this.updateDate();this.updateTime();this.updateHidden();return;},validate:function(){return this.df.validate()&&this.tf.validate();},renderer:function(field){var format=field.editor.dateFormat||Ext.ux.form.DateTime.prototype.dateFormat;format+=' '+(field.editor.timeFormat||Ext.ux.form.DateTime.prototype.timeFormat);var renderer=function(val){var retval=Ext.util.Format.date(val,format);return retval;};return renderer;}});Ext.reg('xdatetime',Ext.ux.form.DateTime);
Ext.namespace('Ext.ux.form');var oFCKeditorOptions={BasePath:'/primal/pub/js/fckeditor/'};Ext.form.FCKeditor=function(config){this.config=config;Ext.form.FCKeditor.superclass.constructor.call(this,config);this.instanceLoaded=false;this.instanceValue='';this.editorInstance=undefined;};Ext.extend(Ext.form.FCKeditor,Ext.form.TextArea,{initComponent:function(){Ext.form.TextArea.superclass.initComponent.call(this);this.addEvents('submit','init','load');},initEvents:function(){this.on('destroy',function(){if(typeof this.editorInstance!='undefined'){delete this.editorInstance;}});},onRender:function(ct,position){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:100px;height:60px;border:1px solid red;",autocomplete:"off"};}
Ext.form.TextArea.superclass.onRender.call(this,ct,position);this.hideMode="visibility";this.hidden=true;if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden");}
this.el.setHeight(this.growMin);}
setTimeout("loadFCKeditor('"+this.id+"',"+this.config.height+");",100);},setSize:function(w,h){Ext.form.TextArea.superclass.setSize.apply(this,arguments);this.initialWidth=w;this.initialHeight=h;},setIsLoaded:function(v){this.instanceLoaded=v;},getIsLoaded:function(){return this.instanceLoaded;},setValue:function(value){this.instanceValue=value;if(this.instanceLoaded){this.FCKeditorSetValue(value);}
Ext.form.TextArea.superclass.setValue.apply(this,[value]);},getValue:function(){if(this.instanceLoaded){value=this.FCKeditorGetValue();return value;}else{return this.instanceValue;}},getRawValue:function(){if(this.instanceLoaded){value=this.FCKeditorGetValue();Ext.form.TextArea.superclass.setRawValue.apply(this,[value]);return Ext.form.TextArea.superclass.getRawValue.call(this);}else{return this.instanceValue;}},FCKeditorSetValue:function(value){if(this.instanceLoaded==false){return;}
var runner=new Ext.util.TaskRunner();var task={run:function(){try{var editor=this.editorInstance;if(editor.EditorDocument.body){editor.SetData(value);runner.stop(task);}}catch(ex){}},interval:100,scope:this};runner.start(task);},FCKeditorGetValue:function(){var data='';if(this.instanceLoaded==false){return data;}
try{data=this.editorInstance.GetXHTML(true);}
catch(ex){}
return data;},onResize:function(w,h){Ext.form.TextArea.superclass.onResize.apply(this,arguments);if(this.instanceLoaded){var ifrm=this.editorInstance.EditorWindow.parent.frameElement;if(this.el&&ifrm){if(typeof w=='number'){var aw=w;this.el.setWidth(this.adjustWidth('textarea',aw));ifrm.style.width=aw+'px';}
if(typeof h=='number'){var ah=h;this.el.setHeight(this.adjustWidth('textarea',ah));ifrm.style.height=ah+'px';}}}}});Ext.reg('fckeditor',Ext.form.FCKeditor);function loadFCKeditor(element,height){var oFCKeditor=new FCKeditor(element);var sBasePath='/primal/pub/js/fckeditor/';oFCKeditor.BasePath=sBasePath;oFCKeditor.Height='100%';var editor=Ext.getCmp(element);editor.editorInstanceInitializing=oFCKeditor;editor.fireEvent('init',editor);oFCKeditor.ReplaceTextarea();}
function FCKeditor_OnComplete(editorInstance){var activeEditor=Ext.getCmp(editorInstance.Name);if(activeEditor){activeEditor.editorInstance=editorInstance;activeEditor.instanceLoaded=true;activeEditor.FCKeditorSetValue(activeEditor.instanceValue);editorInstance.Events.AttachEvent('OnBlur',FCKeditor_OnBlur);editorInstance.Events.AttachEvent('OnFocus',FCKeditor_OnFocus);editorInstance.Events.AttachEvent('OnSelectionChange',FCKeditor_OnSelectionChange);FCKeditor_InitialSize(activeEditor);activeEditor.fireEvent('load',activeEditor);}}
function FCKeditor_OnSelectionChange(editorInstance){var activeEditor=Ext.getCmp(editorInstance.Name);if(activeEditor){activeEditor.fireEvent('change',activeEditor);}}
function FCKeditor_OnBlur(editorInstance){}
function FCKeditor_OnFocus(editorInstance){}
function FCKeditor_InitialSize(ed){var ifrm=ed.editorInstance.EditorWindow.parent.frameElement;var w=ed.initialWidth;var h=ed.initialHeight;if(ed.el&&ifrm){if(typeof w=='number'){var aw=w-ed.el.getFrameWidth('lr');ed.el.setWidth(ed.adjustWidth('textarea',aw));ifrm.style.width=aw+'px';}
if(typeof h=='number'){var ah=h-ed.el.getFrameWidth('tb');ed.el.setHeight(ed.adjustWidth('textarea',ah));ifrm.style.height=ah+'px';}}}
Ext.form.FileUploadField=Ext.extend(Ext.form.TextField,{buttonText:'Browse...',buttonOnly:false,buttonOffset:3,readOnly:true,autoSize:Ext.emptyFn,initComponent:function(){Ext.form.FileUploadField.superclass.initComponent.call(this);this.addEvents('fileselected');},onRender:function(ct,position){Ext.form.FileUploadField.superclass.onRender.call(this,ct,position);this.wrap=this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'});this.el.addClass('x-form-file-text');this.el.dom.removeAttribute('name');this.fileInput=this.wrap.createChild({id:this.getFileInputId(),name:this.name||this.getId(),cls:'x-form-file',tag:'input',type:'file',size:1});var btnCfg=Ext.applyIf(this.buttonCfg||{},{text:this.buttonText});this.button=new Ext.Button(Ext.apply(btnCfg,{renderTo:this.wrap,cls:'x-form-file-btn'+(btnCfg.iconCls?' x-btn-icon':'')}));if(this.buttonOnly){this.el.hide();this.wrap.setWidth(this.button.getEl().getWidth());}
this.fileInput.on('change',function(){var v=this.fileInput.dom.value;this.setValue(v);this.fireEvent('fileselected',this,v);},this);},getFileInputId:function(){return this.id+'-file';},onResize:function(w,h){Ext.form.FileUploadField.superclass.onResize.call(this,w,h);this.wrap.setWidth(w);if(!this.buttonOnly){var w=this.wrap.getWidth()-this.button.getEl().getWidth()-this.buttonOffset;this.el.setWidth(w);}},preFocus:Ext.emptyFn,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);}});Ext.reg('fileuploadfieldsimple',Ext.form.FileUploadField);
Ext.ux.IconCombo=Ext.extend(Ext.form.ComboBox,{initComponent:function(){Ext.apply(this,{tpl:'<tpl for=".">'
+'<div class="x-combo-list-item ux-icon-combo-item '
+'{'+this.iconClsField+'}">'
+'{'+this.displayField+'}'
+'</div></tpl>'});Ext.ux.IconCombo.superclass.initComponent.call(this);},onRender:function(ct,position){Ext.ux.IconCombo.superclass.onRender.call(this,ct,position);this.wrap.applyStyles({position:'relative'});this.el.addClass('ux-icon-combo-input');this.icon=Ext.DomHelper.append(this.el.up('div.x-form-field-wrap'),{tag:'div',style:'position:absolute'});},setIconCls:function(){var rec=this.store.query(this.valueField,this.getValue()).itemAt(0);if(rec){this.icon.className='ux-icon-combo-icon '+rec.get(this.iconClsField);}},setValue:function(value){Ext.ux.IconCombo.superclass.setValue.call(this,value);this.setIconCls();}});Ext.reg('iconcombo',Ext.ux.IconCombo);
Ext.ux.LangCombo=Ext.extend(Ext.ux.IconCombo,{initComponent:function(){var data=[['NE','Neutral','ux-flag-ne'],['EN','English','ux-flag-en'],['RU','Russian','ux-flag-ru'],['CN','Chinese','ux-flag-cn'],['ES','Spanish','ux-flag-es'],['JP','Japanese','ux-flag-jp'],['FR','French','ux-flag-fr'],['KR','Korean','ux-flag-kr'],['IT','Italian','ux-flag-it'],['PT','Portuguese','ux-flag-pt'],['MS','Malay','ux-flag-ms'],['AR','Arabic','ux-flag-ar'],['PL','Polish','ux-flag-pl'],['SV','Swedish','ux-flag-sv'],['TH','Thai','ux-flag-th'],['TR','Turkish','ux-flag-tr'],['VI','Vietnamese','ux-flag-vi'],['RO','Romanian','ux-flag-ro'],['CS','Czech','ux-flag-cs'],['HE','Hebrew','ux-flag-he'],['DA','Danish','ux-flag-da'],['FI','Finnish','ux-flag-fi'],['HU','Hungarian','ux-flag-hu'],['GR','Greek','ux-flag-gr'],['CA','Catalan','ux-flag-ca'],['NO','Norwegian','ux-flag-no'],['SK','Slovak','ux-flag-sk'],['UA','Ukrainian','ux-flag-ua'],['SL','Slovenian','ux-flag-sl'],['DE','Deutch','ux-flag-de'],['IS','Icelandic','ux-flag-is']];if(this.initialConfig['languages']){var s=this.initialConfig['languages'];var newdata=[];for(var i=0;i<data.length;i++){if(s.indexOf(data[i][0].toLowerCase())>-1){newdata.push(data[i]);}}
data=newdata;}
var store=new Ext.data.SimpleStore({fields:['countryCode','countryName','countryFlag'],data:data});Ext.apply(this,{width:65,hideLabel:false,store:store,valueField:'countryCode',displayField:'countryCode',iconClsField:'countryFlag',triggerAction:'all',editable:false,mode:'local'});var key=this.initialConfig['key'];if(!key){key='language';}
var cp=new Ext.state.CookieProvider({expires:new Date(new Date().getTime()+(1000*60*60*24*30)),path:'/'});this.on('select',function(s){cp.set(key,s.getValue());},this);this.on('render',function(s){s.setValue(cp.get(key,'NE'),true);},this);Ext.ux.LangCombo.superclass.initComponent.apply(this,arguments);},onRender:function(){Ext.ux.LangCombo.superclass.onRender.apply(this,arguments);},setValue:function(v){if(v!=null){v=String(v).toUpperCase();Ext.ux.LangCombo.superclass.setValue.apply(this,[v]);}}});Ext.reg('langcombo',Ext.ux.LangCombo);
Ext.ux.clone=function(o){if(!o||'object'!==typeof o){return o;}
var c='[object Array]'===Object.prototype.toString.call(o)?[]:{};var p,v;for(p in o){if(o.hasOwnProperty(p)){v=o[p];if(v&&'object'===typeof v){c[p]=Ext.ux.clone(v);}
else{c[p]=v;}}}
return c;};
Ext.namespace('Ext.grid');Ext.grid.ProgressColumn=function(config){Ext.apply(this,config);this.renderer=this.renderer.createDelegate(this);this.addEvents('action');Ext.grid.ProgressColumn.superclass.constructor.call(this);};Ext.extend(Ext.grid.ProgressColumn,Ext.util.Observable,{ceiling:100,textPst:'%',colored:false,actionEvent:'dblclick',init:function(grid){this.grid=grid;this.view=grid.getView();if(this.editor&&grid.isEditor){var cfg={scope:this};cfg[this.actionEvent]=this.onClick;grid.afterRender=grid.afterRender.createSequence(function(){this.view.mainBody.on(cfg);},this);}},onClick:function(e,target){var rowIndex=e.getTarget('.x-grid3-row').rowIndex;var colIndex=this.view.findCellIndex(target.parentNode.parentNode);var t=e.getTarget('.x-progress-text');if(t){this.grid.startEditing(rowIndex,colIndex);}},renderer:function(v,p,record){var style='';var textClass=(v<(this.ceiling/2))?'x-progress-text-back':'x-progress-text';var text=String.format('</div><div class="x-progress-text {0}" style="width:100%;" id="{1}">{2} ({3})</div></div>',textClass,Ext.id(),record.get(this.progressText),v+this.textPst);if(this.colored==true){if(v<=(this.ceiling*0.75)&&v>(this.ceiling*0.50))
style='-green';if(v<=(this.ceiling*0.50)&&v>(this.ceiling*0.25))
style='-orange';if(v<=(this.ceiling*0.25))
style='-red';}
p.css+=' x-grid3-progresscol';v=Math.round((v/this.ceiling)*100);return String.format('<div class="x-progress-wrap"><div class="x-progress-inner"><div class="x-progress-bar" style="width:{1}%;">{2}</div>'+'</div></div>',style,v,text);}});
Ext.ux.ImagePanel=Ext.extend(Ext.Panel,{isFormField:true,initComponent:function(){this.addEvents('valid');this.imagePanel=new Ext.Panel({bodyStyle:'background:transparent;',border:false,height:50,width:70,html:''});this.checkBox=new Ext.form.Checkbox({xtype:'checkbox',name:this.initialConfig['name']+'-delete',boxLabel:'delete'.lc(),inputValue:1});Ext.apply(this,{layout:'column',bodyStyle:'background:transparent;',border:false,hidden:true,items:[this.imagePanel,this.checkBox]});Ext.ux.ImagePanel.superclass.initComponent.call(this);},setValue:function(value){if(value!=null){if(typeof(value)=='object'){this.setImage(value['url'],value['type']['ext']);}
else{this.setImage(value);}}},getValue:function(){return null;},setRawValue:function(value){this.setValue(value);},getRawValue:function(){return this.getValue();},setImage:function(url,type){if(!type){type=url.slice(url.lastIndexOf('.')+1).toLowerCase();}
var typeimg=['gif','jpg','jpeg','png','swf','psd','bmp','tiff','tiff','jpc','jp2','jpx','jb2','swc','iff','wbmp','xbm'];if(typeimg.indexOf(type)>-1){this.imagePanel.getEl().update('<a href="#" onclick="Ext.ux.ImagePanel.viewImage(\''+url+'\')">'
+'<img src="'+url+'" width="50" height="50" border="0"/>'
+'</a>');}
else{this.imagePanel.getEl().update('<a target="_blank" href="'+url+'">'
+'download'.lc()
+'</a>');}
this.show();},onRender:function(ct,position){Ext.ux.ImagePanel.superclass.onRender.call(this,ct,position);this.el.addClass('x-form-field');},validate:function(){return true;},clearInvalid:function(){if(!this.rendered||this.preventMark){return;}
this.fireEvent('valid',this);},getName:function(){return this.name;}});Ext.reg('imagepanel',Ext.ux.ImagePanel);Ext.ux.ImagePanel.viewImage=function(src){new Ext.Window({title:'Image'.lc(),closable:true,autoShow:true,autoScroll:true,width:600,height:400,resizable:true,maximizable:true,modal:true,html:'<img src="'+src+'"/>'}).show();return false;}
Ext.ns("Ext.ux.renderer");Ext.ux.renderer.ComboRenderer=function(options){var value=options.value;var combo=options.combo;var returnValue=value;var valueField=combo.valueField;var idx=combo.store.findBy(function(record){if(record.get(valueField)==value){returnValue=record.get(combo.displayField);return true;}});if(idx<0&&value==0){returnValue='';}
return returnValue;};Ext.ux.renderer.Combo=function(combo){return function(value,meta,record){return Ext.ux.renderer.ComboRenderer({value:value,meta:meta,record:record,combo:combo});};}
if(!Ext.isArray){Ext.isArray=function(v){return v&&'function'===typeof v.pop;};}
Ext.ux.MetaForm=Ext.extend(Ext.FormPanel,{autoInit:true,border:false,frame:true,loadingText:'Loading...',savingText:'Saving...',buttonMinWidth:90,columnCount:1,initComponent:function(){Ext.apply(this,{items:this.items||{}});if('function'===typeof this.getButton){this.buttons=this.getButtons();}
Ext.ux.MetaForm.superclass.initComponent.apply(this,arguments);this.addEvents('cancel','ok');this.form.on({beforeaction:{scope:this,fn:this.beforeAction},actioncomplete:{scope:this,fn:function(form,action){if('load'===action.type&&action.result.metaData){this.onMetaChange(this,action.result.metaData);}
else if('submit'===action.type){this.updateBoundData();}}}});this.form.trackResetOnLoad=true;},beforeAction:function(form,action){action.success=function(response){var result=this.processResponse(response);if(result===true||!result.success||!result.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return;}
this.form.afterAction(this,true);this.form.clearInvalid();this.form.setValues(result.data);};},bind:function(data){this.data=data;this.form.setValues(this.data);},getButtons:function(){var buttons=[];if(Ext.isArray(this.createButtons)){Ext.each(this.createButtons,function(name){var button;switch(name){case'meta':button=this.getButton(name,{handler:this.load.createDelegate(this,[{params:{meta:true}}])});break;case'load':button=this.getButton(name,{scope:this,handler:this.load});break;case'defaults':button=this.getButton(name,{scope:this,handler:this.setDefaultValues});break;case'reset':button=this.getButton(name,{scope:this,handler:this.reset});break;case'save':case'submit':button=this.getButton(name,{handler:this.submit.createDelegate(this,[{params:{cmd:'setPref'}}])});break;case'ok':button=this.getButton(name,{scope:this,handler:this.onOk});break;case'cancel':button=this.getButton(name,{scope:this,handler:this.onCancel});break;}
if(button){Ext.apply(button,{minWidth:this.buttonMinWidth});buttons.push(button);}},this);}
return buttons;},getOptions:function(o){var options={url:this.url,method:this.method||'post'};Ext.apply(options,o);options.params=Ext.apply(this.baseParams||{},o.params);return options;},getValues:function(){var values={};this.form.items.each(function(f){values[f.name]=f.getValue();});return values;},load:function(o){var options=this.getOptions(o);if(this.loadingText){options.waitMsg=this.loadingText;}
this.form.load(options);},onCancel:function(){this.fireEvent('cancel',this);},onMetaChange:function(form,meta){this.removeAll();var columns,colIndex,tabIndex,ignore={};this.add(new Ext.Panel({layout:'column',anchor:'100%',border:false,defaults:(function(){this.columnCount=meta.formConfig?meta.formConfig.columnCount||this.columnCount:this.columnCount;return Ext.apply({},meta.formConfig||{},{columnWidth:1/this.columnCount,autoHeight:true,border:false,hideLabel:true,layout:'form'});}).createDelegate(this)(),items:(function(){var items=[];for(var i=0;i<this.columnCount;i++){items.push({defaults:this.defaults,listeners:{add:{scope:this,fn:this.onAdd}}});}
return items;}).createDelegate(this)()}));columns=this.items.get(0).items;colIndex=0;tabIndex=1;if(Ext.isArray(this.ignoreFields)){Ext.each(this.ignoreFields,function(f){ignore[f]=true;});}
Ext.each(meta.columns||meta.fields,function(item){if(true===ignore[item.name]){return;}
var config=Ext.apply({},item.editor,{name:item.name||item.dataIndex,fieldLabel:item.fieldLabel||item.header,defaultValue:item.defaultValue,xtype:item.editor&&item.editor.xtype?item.editor.xtype:'textfield'});if(config.editor&&config.editor.regex){config.editor.regex=new RegExp(item.editor.regex);}
if('checkbox'===config.xtype){Ext.apply(config,{boxLabel:' ',checked:item.defaultValue});}
if('datefield'===config.xtype){Ext.apply(config,{altFormats:'U'});}
if(meta.formConfig.msgTarget){config.msgTarget=meta.formConfig.msgTarget;}
config.tabIndex=tabIndex++;columns.get(colIndex++).add(config);colIndex=colIndex===this.columnCount?0:colIndex;},this);this.doLayout();},onOk:function(){this.updateBoundData();this.fireEvent('ok',this);},onRender:function(){Ext.ux.MetaForm.superclass.onRender.apply(this,arguments);this.form.waitMsgTarget=this.el;if(true===this.autoInit){this.load({params:{meta:true}});}
else if('object'===typeof this.autoInit){this.load(this.autoInit);}},removeAll:function(){var hd=this.body.up('div.x-panel-bwrap').prev();if(hd){hd.applyStyles({border:'none'});}
this.items.each(this.remove,this);this.form.items.clear();},reset:function(){this.form.reset();},setDefaultValues:function(){this.form.items.each(function(item){item.setValue(item.defaultValue);});},submit:function(o){var options=this.getOptions(o);if(this.savingText){options.waitMsg=this.savingText;}
this.form.submit(options);},updateBoundData:function(){if(this.data){Ext.apply(this.data,this.getValues());}}});Ext.reg('metaform',Ext.ux.MetaForm);
Ext.namespace('Ext.ux.menu');Ext.ux.menu.StoreMenu=function(config){Ext.ux.menu.StoreMenu.superclass.constructor.call(this,config);if(!this.store){this.store=new Ext.data.SimpleStore({fields:['config'],url:this.url,baseParams:this.baseParams});}
this.on('show',this.onMenuLoad,this);this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);};Ext.extend(Ext.ux.menu.StoreMenu,Ext.menu.Menu,{loadingText:Ext.LoadMask.prototype.msg||'Loading...',loaded:false,onMenuLoad:function(){if(!this.loaded){this.store.load();}},updateMenuItems:function(loadedState,records){this.removeAll();this.el.sync();if(loadedState){for(var i=0,len=records.length;i<len;i++){if(records[i].json.handler){eval("records[i].json.handler = "+records[i].json.handler);}
if(records[i].json.menu){eval("records[i].json.menu = "+records[i].json.menu);}
this.add(records[i].json);}}
else{this.add('<span class="loading-indicator">'+this.loadingText+'</span>');}
this.loaded=loadedState;},onBeforeLoad:function(store){this.store.baseParams=this.baseParams;this.updateMenuItems(false);},onLoad:function(store,records){this.updateMenuItems(true,records);}});
Ext.ux.LinkCombo=Ext.extend(Ext.form.ComboBox,{url:null,baseParams:null,entity:null,pageSize:10,initialized:false,initComponent:function(){this.initialized=false;var params=Ext.ux.clone(this.baseParams);params['entity']=this.entity;params['attribute']=this.name;this.dataSource=new Ext.data.JsonStore({url:this.url,baseParams:params,root:'root',totalProperty:'totalCount',id:'obj_id',fields:[{name:'obj_id'},{name:'title'}],listeners:{load:(function(store,records,options){this.initialized=true;if(records.length>0){this.setValue(records[0].get('obj_id'));}
else{this.setValue('');}
store.insert(0,[new Ext.data.Record({obj_id:0,title:''})]);this.enable();}).createDelegate(this)}});var resultTpl=new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item">','<div style="float:left;">{title}</div>','</div></tpl>');Ext.apply(this,{store:this.dataSource,displayField:'title',valueField:'obj_id',name:this.name,hiddenName:this.name,typeAhead:false,loadingText:'Searching...'.lc(),pageSize:this.pageSize,triggerAction:'all',minChars:1,tpl:resultTpl});Ext.ux.LinkCombo.superclass.initComponent.call(this);},setValue:function(v){Ext.ux.LinkCombo.superclass.setValue.call(this,v);if(!this.initialized){this.disable();this.dataSource.load({params:{query:v}});}},isValid:function(preventMark){if(!this.initialized){return false;}
return Ext.ux.LinkCombo.superclass.isValid.call(this,preventMark);},validate:function(){if(!this.initialized){this.markInvalid('Loading...'.lc());return false;}
return Ext.ux.LinkCombo.superclass.validate.call(this);}});Ext.reg('linkcombo',Ext.ux.LinkCombo);
if('function'!==typeof RegExp.escape){RegExp.escape=function(s){if('string'!==typeof s){return s;}
return s.replace(/([.*+?^=!:${}()|[\]\/\\])/g,'\\$1');};}
Ext.ns('Ext.ux.grid');Ext.ux.grid.RowActions=function(config){Ext.apply(this,config);this.addEvents('beforeaction','action','beforegroupaction','groupaction');Ext.ux.grid.RowActions.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.RowActions,Ext.util.Observable,{actionEvent:'click',autoWidth:true,dataIndex:'',header:'',menuDisabled:true,sortable:false,tplGroup:'<tpl for="actions">'
+'<div class="ux-grow-action-item<tpl if="\'right\'===align"> ux-action-right</tpl> '
+'{cls}" style="{style}" qtip="{qtip}">{text}</div>'
+'</tpl>',tplRow:'<div class="ux-row-action">'
+'<tpl for="actions">'
+'<div class="ux-row-action-item {cls} <tpl if="text">'
+'ux-row-action-text</tpl>" style="{hide}{style}" qtip="{qtip}">'
+'<tpl if="text"><span qtip="{qtip}">{text}</span></tpl></div>'
+'</tpl>'
+'</div>',hideMode:'visiblity',widthIntercept:4,widthSlope:21,init:function(grid){this.grid=grid;if(!this.tpl){this.tpl=this.processActions(this.actions);}
if(this.autoWidth){this.width=this.widthSlope*this.actions.length+this.widthIntercept;this.fixed=true;}
var view=grid.getView();var cfg={scope:this};cfg[this.actionEvent]=this.onClick;grid.afterRender=grid.afterRender.createSequence(function(){view.mainBody.on(cfg);},this);if(!this.renderer){this.renderer=function(value,cell,record,row,col,store){cell.css+=(cell.css?' ':'')+'ux-row-action-cell';return this.tpl.apply(this.getData(value,cell,record,row,col,store));}.createDelegate(this);}
if(view.groupTextTpl&&this.groupActions){view.interceptMouse=view.interceptMouse.createInterceptor(function(e){if(e.getTarget('.ux-grow-action-item')){return false;}});view.groupTextTpl='<div class="ux-grow-action-text">'+view.groupTextTpl+'</div>'
+this.processActions(this.groupActions,this.tplGroup).apply();}},getData:function(value,cell,record,row,col,store){return record.data||{};},processActions:function(actions,template){var acts=[];Ext.each(actions,function(a,i){if(a.iconCls&&'function'===typeof(a.callback||a.cb)){this.callbacks=this.callbacks||{};this.callbacks[a.iconCls]=a.callback||a.cb;}
var o={cls:a.iconIndex?'{'+a.iconIndex+'}':(a.iconCls?a.iconCls:''),qtip:a.qtipIndex?'{'+a.qtipIndex+'}':(a.tooltip||a.qtip?a.tooltip||a.qtip:''),text:a.textIndex?'{'+a.textIndex+'}':(a.text?a.text:''),hide:a.hideIndex?'<tpl if="'+a.hideIndex+'">'
+('display'===this.hideMode?'display:none':'visibility:hidden')+';</tpl>':(a.hide?('display'===this.hideMode?'display:none':'visibility:hidden;'):''),align:a.align||'right',style:a.style?a.style:''};acts.push(o);},this);var xt=new Ext.XTemplate(template||this.tplRow);return new Ext.XTemplate(xt.apply({actions:acts}));},onClick:function(e,target){var view=this.grid.getView();var action=false;var row=e.getTarget('.x-grid3-row');var col=view.findCellIndex(target.parentNode.parentNode);var t=e.getTarget('.ux-row-action-item');if(t){action=t.className.replace(/ux-row-action-item /,'');if(action){action=action.replace(/ ux-row-action-text/,'');action=action.trim();}}
if(false!==row&&false!==col&&false!==action){var record=this.grid.store.getAt(row.rowIndex);if(this.callbacks&&'function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,record,action,row.rowIndex,col);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforeaction',this.grid,record,action,row.rowIndex,col)){return;}
else if(true!==this.eventsSuspended){this.fireEvent('action',this.grid,record,action,row.rowIndex,col);}}
t=e.getTarget('.ux-grow-action-item');if(t){var group=view.findGroup(target);var groupId=group?group.id.replace(/ext-gen[0-9]+-gp-/,''):null;var records;if(groupId){var re=new RegExp(RegExp.escape(groupId));records=this.grid.store.queryBy(function(r){return r._groupId.match(re);});records=records?records.items:[];}
action=t.className.replace(/ux-grow-action-item (ux-action-right )*/,'');if('function'===typeof this.callbacks[action]){this.callbacks[action](this.grid,records,action,groupId);}
if(true!==this.eventsSuspended&&false===this.fireEvent('beforegroupaction',this.grid,records,action,groupId)){return false;}
this.fireEvent('groupaction',this.grid,records,action,groupId);}}});Ext.reg('rowactions',Ext.ux.grid.RowActions);
Ext.ns('Ext.ux.grid');Ext.ux.grid.Search=function(config){Ext.apply(this,config);Ext.ux.grid.Search.superclass.constructor.call(this);};Ext.extend(Ext.ux.grid.Search,Ext.util.Observable,{searchText:'Search',searchTipText:'Type a text to search and press Enter',selectAllText:'Select All',position:'bottom',iconCls:'icon-magnifier',checkIndexes:'all',disableIndexes:[],dateFormat:undefined,showSelectAll:true,menuStyle:'checkbox',minCharsTipText:'Type at least {0} characters',mode:'remote',width:100,xtype:'gridsearch',paramNames:{fields:'fields',query:'query'},shortcutKey:'r',shortcutModifier:'alt',init:function(grid){this.grid=grid;if('string'===typeof this.toolbarContainer){this.toolbarContainer=Ext.getCmp(this.toolbarContainer);}
grid.onRender=grid.onRender.createSequence(this.onRender,this);grid.reconfigure=grid.reconfigure.createSequence(this.reconfigure,this);},onRender:function(){var panel=this.toolbarContainer||this.grid;var tb='bottom'===this.position?panel.bottomToolbar:panel.topToolbar;this.menu=new Ext.menu.Menu();if('right'===this.align){tb.addFill();}
else{if(0<tb.items.getCount()){tb.addSeparator();}}
tb.add({text:this.searchText,menu:this.menu,iconCls:this.iconCls});this.field=new Ext.form.TwinTriggerField({width:this.width,selectOnFocus:undefined===this.selectOnFocus?true:this.selectOnFocus,trigger1Class:'x-form-clear-trigger',trigger2Class:this.minChars?'x-hidden':'x-form-search-trigger',onTrigger1Click:this.minChars?Ext.emptyFn:this.onTriggerClear.createDelegate(this),onTrigger2Click:this.onTriggerSearch.createDelegate(this),minLength:this.minLength});this.field.on('render',function(){this.field.el.dom.qtip=this.minChars?String.format(this.minCharsTipText,this.minChars):this.searchTipText;if(this.minChars){this.field.el.on({scope:this,buffer:300,keyup:this.onKeyUp});}
var map=new Ext.KeyMap(this.field.el,[{key:Ext.EventObject.ENTER,scope:this,fn:this.onTriggerSearch},{key:Ext.EventObject.ESC,scope:this,fn:this.onTriggerClear}]);map.stopEvent=true;},this,{single:true});tb.add(this.field);this.reconfigure();if(this.shortcutKey&&this.shortcutModifier){var shortcutEl=this.grid.getEl();var shortcutCfg=[{key:this.shortcutKey,scope:this,stopEvent:true,fn:function(){this.field.focus();}}];shortcutCfg[0][this.shortcutModifier]=true;this.keymap=new Ext.KeyMap(shortcutEl,shortcutCfg);}
if(true===this.autoFocus){this.grid.store.on({scope:this,load:function(){this.field.focus();}});}},onKeyUp:function(){var length=this.field.getValue().toString().length;if(0===length||this.minChars<=length){this.onTriggerSearch();}},onTriggerClear:function(){if(this.field.getValue()){this.field.setValue('');this.field.focus();this.onTriggerSearch();}},onTriggerSearch:function(){if(!this.field.isValid()){return;}
var val=this.field.getValue();var store=this.grid.store;if('local'===this.mode){store.clearFilter();if(val){store.filterBy(function(r){var retval=false;this.menu.items.each(function(item){if(!item.checked||retval){return;}
var rv=r.get(item.dataIndex);rv=rv instanceof Date?rv.format(this.dateFormat||r.fields.get(item.dataIndex).dateFormat):rv;var re=new RegExp(val,'gi');retval=re.test(rv);},this);if(retval){return true;}
return retval;},this);}
else{}}
else{if(store.lastOptions&&store.lastOptions.params){store.lastOptions.params[store.paramNames.start]=0;}
var fields=[];this.menu.items.each(function(item){if(item.checked){fields.push(item.dataIndex);}});delete(store.baseParams[this.paramNames.fields]);delete(store.baseParams[this.paramNames.query]);if(store.lastOptions&&store.lastOptions.params){delete(store.lastOptions.params[this.paramNames.fields]);delete(store.lastOptions.params[this.paramNames.query]);}
if(fields.length){store.baseParams[this.paramNames.fields]=Ext.encode(fields);store.baseParams[this.paramNames.query]=val;}
store.reload();}},setDisabled:function(){this.field.setDisabled.apply(this.field,arguments);},enable:function(){this.setDisabled(false);},disable:function(){this.setDisabled(true);},reconfigure:function(){var menu=this.menu;menu.removeAll();if(this.showSelectAll&&'radio'!==this.menuStyle){menu.add(new Ext.menu.CheckItem({text:this.selectAllText,checked:!(this.checkIndexes instanceof Array),hideOnClick:false,handler:function(item){var checked=!item.checked;item.parentMenu.items.each(function(i){if(item!==i&&i.setChecked&&!i.disabled){i.setChecked(checked);}});}}),'-');}
var cm=this.grid.colModel;var group=undefined;if('radio'===this.menuStyle){group='g'+(new Date).getTime();}
Ext.each(cm.config,function(config){var disable=false;if(config.header&&config.dataIndex){Ext.each(this.disableIndexes,function(item){disable=disable?disable:item===config.dataIndex;});if(!disable){menu.add(new Ext.menu.CheckItem({text:config.header,hideOnClick:false,group:group,checked:'all'===this.checkIndexes,dataIndex:config.dataIndex}));}}},this);if(this.checkIndexes instanceof Array){Ext.each(this.checkIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di;});if(item){item.setChecked(true,true);}},this);}
if(this.readonlyIndexes instanceof Array){Ext.each(this.readonlyIndexes,function(di){var item=menu.items.find(function(itm){return itm.dataIndex===di;});if(item){item.disable();}},this);}}});
var PSP_UI_Admin_PolicyModule=function(){PSP_UI_Admin_PolicyModule.superclass.constructor.call(this);}
Ext.extend(PSP_UI_Admin_PolicyModule,Module,{index:function(params){},policy:function(params){var clsName=params.cls;var objName=params.obj;var obj=this;var store=new Ext.data.Store({url:obj.thisUrl,baseParams:obj.baseParams['policy_list'],reader:new Ext.data.JsonReader({root:'root',id:'id',successProperty:'success'},Ext.data.Record.create([{name:'id'},{name:'name'},{name:'type'},{name:'policy'}]))});var grid=new Ext.grid.GridPanel({store:store,id:obj.ctlId('grid-policy'),autoExpandColumn:'col-title',columns:[{header:'User / Group'.lc(),width:40,dataIndex:'name',id:'col-title',sortable:true},{header:'Policy'.lc(),dataIndex:'policy',sortable:true,resizable:true,renderer:function(value,metaData,record,rowIndex,colIndex,store){var html=[];for(var i=0;i<value.length;i++){var title=value[i]['title']?value[i]['title']:'#'+value[i]['policy']+'#';if(value[i]['deny']=='1'){html.push('<span style="color:#CC0000;">'+title+'</span>');}
else{html.push('<span style="color:#006600;">'+title+'</span>');}}
return html.join(', ');}}],sm:new Ext.grid.RowSelectionModel({singleSelect:true,listeners:{selectionchange:function(sm){Ext.getCmp(obj.ctlId('btn-edit-policy')).setDisabled(!sm.hasSelection());}}}),listeners:{dblclick:function(e){var rec=Ext.getCmp(obj.ctlId('grid-policy')).getSelectionModel().getSelected();var id=0;var type='';if(rec){id=rec.get('id');type=rec.get('type');}
ModuleManager.action(obj.sysname,'policyform',{id:id,type:type,cls:clsName,obj:objName});}}});var w=new Ext.Window({autoShow:false,id:obj.ctlId('win-policy'),width:500,height:350,modal:true,title:'Policy for'.lc()+' ['+clsName+'::'+objName+']',layout:'fit',maximizable:true,resizable:true,items:[grid],listeners:{maximize:function(w){w.doLayout();},restore:function(w){w.doLayout();}},tbar:[{tooltip:'New policy'.lc(),iconCls:'ux-icon-add',handler:function(){ModuleManager.action(obj.sysname,'policyform',{cls:clsName,obj:objName});}},{tooltip:'Edit policy'.lc(),iconCls:'ux-icon-edit',id:obj.ctlId('btn-edit-policy'),disabled:true,handler:function(){var rec=Ext.getCmp(obj.ctlId('grid-policy')).getSelectionModel().getSelected();var id=0;var type='';if(rec){id=rec.get('id');type=rec.get('type');}
ModuleManager.action(obj.sysname,'policyform',{id:id,type:type,cls:clsName,obj:objName});}}],buttons:[{text:'Ok'.lc(),handler:function(){w.close();}}]})
w.show();store.load({params:{cls:clsName,obj:objName}});},policyform:function(params){var obj=this;var clsName=params.cls;var objName=params.obj;var type=params.type;var id=params.id;var item=new Ext.Panel({region:'north',id:obj.ctlId('pnl-policyform-user'),height:30,bodyStyle:'background:transparent;padding:5px;',html:''});var item=null;if(!id){var ds=new Ext.data.JsonStore({url:obj.thisUrl,baseParams:obj.baseParams['policy_user_search'],root:'root',totalProperty:'total',id:'obj_id',fields:[{name:'obj_id'},{name:'type'},{name:'name'}],listeners:{load:function(store,records,options){for(var i=0;i<records.length;i++){var r=records[i];r.set('type_lc',r.get('type').lc());}}}});var resultTpl=new Ext.XTemplate('<tpl for="."><div class="x-combo-list-item">','<div style="width:130px;float:left;">{name}</div>','{type_lc}','</div></tpl>');item=new Ext.Panel({layout:'table',layoutConfig:{columns:4},bodyStyle:'background:transparent;',border:false,items:[{xtype:'panel',bodyStyle:'background:transparent;',border:false,html:'Search'.lc()+':',width:80},{xtype:'hidden',name:'type',id:obj.ctlId('hid-policyform-form-type')},new Ext.form.ComboBox({store:ds,displayField:'name',valueField:'obj_id',name:'identity',hiddenName:'identity',typeAhead:false,loadingText:'Searching...'.lc(),width:220,pageSize:10,minChars:1,tpl:resultTpl,listeners:{select:function(combo,record,index){Ext.getCmp(obj.ctlId('hid-policyform-form-type')).setValue(record.get('type'));}}}),{xtype:'panel',bodyStyle:'background:transparent;padding-left:10px;',border:false,html:'(2 chars min)'.lc()}]});}
else{item=new Ext.Panel({bodyStyle:'background:transparent;',border:false,items:[{xtype:'hidden',name:'identity',value:id},{xtype:'hidden',name:'type',value:type},{id:obj.ctlId('pnl-policyform-user'),bodyStyle:'background:transparent;',border:false}]});}
var store=new Ext.data.Store({url:obj.thisUrl,baseParams:obj.baseParams['policy_item'],reader:new Ext.data.JsonReader({root:'root',id:'policy',successProperty:'success'},Ext.data.Record.create([{name:'policy'},{name:'title'},{name:'inherit',type:'bool'},{name:'allow',type:'bool'},{name:'deny',type:'bool'},{name:'info'}])),scope:this,listeners:{load:function(store,r,options){if(r.length>0){var id=r[0].get('info')['obj_id'];var login=r[0].get('info')['name'];if(id>0){var elt=Ext.getCmp(obj.ctlId('pnl-policyform-user'));elt.body.update('User / Group'.lc()+' : '+login);}}}}});var grid=new Ext.grid.GridPanel({store:store,id:obj.ctlId('grid-policyform'),region:'center',autoExpandColumn:'col-title',columns:[{header:'Policy'.lc(),dataIndex:'title',sortable:true},{header:'inherit'.lc(),dataIndex:'policy',width:40,renderer:function(value,metaData,record,store){return'<center><input type="RADIO" name="policy['+record.get('policy')+']" value="inherit" '
+(record.get('inherit')?' CHECKED ':'')
+'/></center>';}},{header:'allow'.lc(),dataIndex:'policy',width:40,css:'background:#006600;',renderer:function(value,metaData,record,store){return'<center><input type="RADIO" name="policy['+record.get('policy')+']" value="allow" '
+(record.get('allow')?' CHECKED ':'')
+'/></center>';}},{header:'deny'.lc(),dataIndex:'policy',width:40,css:'background:#CC0000;',renderer:function(value,metaData,record,store){return'<center><input type="RADIO" name="policy['+record.get('policy')+']" value="deny" '
+(record.get('deny')?' CHECKED ':'')
+'/></center>';}}],sm:new Ext.grid.RowSelectionModel({singleSelect:true}),viewConfig:{forceFit:true}});var w=new Ext.Window({autoShow:false,id:obj.ctlId('win-policyform'),width:500,height:300,layout:'fit',modal:true,title:'Policy'.lc(),maximizable:false,resizable:false,items:new Ext.form.FormPanel({border:false,id:obj.ctlId('win-policyform-form'),url:obj.thisUrl,baseParams:obj.baseParams['policy_save'],items:{layout:'border',xtype:'panel',border:false,anchor:'100% 100%',items:[{region:'north',xtype:'panel',height:30,bodyStyle:'background:transparent;padding:5px;',items:item},grid]}}),listeners:{maximize:function(w){w.doLayout();},restore:function(w){w.doLayout();}},buttons:[{text:'Ok'.lc(),handler:function(){var form=Ext.getCmp(obj.ctlId('win-policyform-form')).getForm();form.submit({waitMsg:'Saving...'.lc(),params:{cls:clsName,obj:objName},success:function(form,action){w.close();var grid=Ext.getCmp(obj.ctlId('grid-policy'));grid.getStore().reload();},failure:function(form,action){Ext.Msg.show({title:'Policy save error'.lc(),msg:action.result.exception,buttons:Ext.Msg.OK,icon:Ext.Msg.ERROR,minWidth:200});}});}}]});w.show();store.load({params:{type:type,id:id,cls:clsName,obj:objName}});}});
var PSP_UI_Admin_FileManagerModule=function(){PSP_UI_Admin_FileManagerModule.superclass.constructor.call(this);}
Ext.extend(PSP_UI_Admin_FileManagerModule,Module,{index:function(params){var obj=this;var treepanel=new Ext.ux.FileTreePanel({autoWidth:true,id:'ftp',rootPath:'/',topMenu:true,autoScroll:true,enableProgress:false});var w=new Ext.Window({autoShow:true,x:30,y:50,width:350,height:600,modal:false,title:'File Manager'.lc(),layout:'fit',maximizable:true,items:treepanel})
w.show();}});
var PSP_UI_Admin_AppRestartModule=function(){PSP_UI_Admin_AppRestartModule.superclass.constructor.call(this);}
Ext.extend(PSP_UI_Admin_AppRestartModule,Module,{index:function(params){var wt=Ext.Msg.wait('Please wait...'.lc(),'Application restarting...'.lc());Ext.Ajax.request({url:this.thisUrl,params:this.baseParams['restart'],success:function(response,options){wt.hide();Ext.Msg.show({title:'Complete'.lc(),msg:'Application restarted'.lc(),buttons:Ext.Msg.OK,icon:Ext.Msg.INFO,minWidth:200,fn:function(){document.location.reload();}});}});}});
Ext.ux.LinkPanel=Ext.extend(Ext.Panel,{block_id:0,pageSize:50,baseParams:{},url:'',dirty:false,initComponent:function(){this.store=new Ext.data.Store({url:this.url,baseParams:this.baseParams,remoteSort:true,autoLoad:false,reader:new Ext.data.JsonReader({root:'root',id:'n',totalProperty:'totalCount',successProperty:'success'},Ext.data.Record.create([{name:'obj_id'},{name:'title'},{name:'linked',type:'boolean'}])),listeners:{load:(function(store,rows,opts){var sel=[];for(var i=0;i<rows.length;i++){if(rows[i].get('linked')){sel.push(rows[i]);}}
var sm=Ext.getCmp(this.id+'-grid').getSelectionModel();sm.selectRecords(sel);this.dirty=true;}).createDelegate(this)}});var sm=new Ext.grid.CheckboxSelectionModel({});this.grid=new Ext.grid.GridPanel({store:this.store,id:this.id+'-grid',region:'center',border:false,autoExpandColumn:'col-title',columns:[sm,{id:'col-title',header:'Title'.lc(),width:200,dataIndex:'title',sortable:true}],sm:sm,plugins:[new Ext.ux.grid.Search({iconCls:'icon-zoom',minChars:3,autoFocus:true,width:200,searchText:'Search'.lc(),selectAllText:'Select All'.lc(),searchTipText:'Type a text to search and press Enter'.lc(),minCharsTipText:'Type at least {0} characters'.lc()})],bbar:[new Ext.PagingToolbar({store:this.store,displayInfo:false,pageSize:this.pageSize})]});Ext.apply(this,{layout:'fit',bodyStyle:'background:transparent;',border:false,items:this.grid});this.grid.on('render',function(){this.store.load();},this);Ext.ux.LinkPanel.superclass.initComponent.call(this);},getSelection:function(){if(this.dirty){var result={block_id:this.block_id,data:[]};var rows=this.grid.getSelectionModel().getSelections();for(var i=0;i<rows.length;i++){result.data.push(rows[i].get('obj_id'));}
return result;}
else{return null;}}});Ext.reg('linkpanel',Ext.ux.LinkPanel);
