
Excelsior={siteName:'Indica',siteUrl:'http://www.noix.com.br/systems/indica',ajaxTimeout:10000,namespace:function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=a[i].split(".");o=Excelsior;for(j=(d[0]=="Excelsior")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}
return o;}};Excelsior.window={isLocked:false,lock:function(){if(this.isLocked){return true;}
var first=jQuery('body :first-child')[0];var div=first.parentNode.insertBefore(document.createElement('div'),first);div.id='Excelsior-window-lock';var pageSize=NOIX.util.getPageSize();jQuery('#Excelsior-window-lock').css({cursor:'wait',height:pageSize[1]+'px',width:'100%',position:'absolute',zIndex:'9999'});this.isLocked=true;},unlock:function(){var div=document.getElementById('Excelsior-window-lock');if(div){div.parentNode.removeChild(div);}
this.isLocked=false;}};Excelsior.grid={listGrids:{},callbacks:{},last:null,create:function(ns,conf){var that=this;this.last=ns;if(typeof this.listGrids[ns]!="undefined"){this.listGrids[ns]=null;}
var c=conf||{};jQuery.ajax({url:Excelsior.siteUrl+'/excelsior/gridhandler/getSetup',data:{id:ns,_ajax:1},complete:function(data,textStatus){var response=new Excelsior.form.response(data.responseText);if(response.status()=="sucess"){eval('response._res.data = '+response.getData());var setup=response.getData();var id=setup.primaryKey;delete setup.primarykey;NOIX.copy(c,setup);NOIX.get(c.renderTo).innerHTML='';that.listGrids[ns]=new Excelsior.grid.gridPanel(ns,id,c);Excelsior.messages.serverMessage(response);}
if(that.callbacks[ns]){that.callbacks[ns].call(that);}},type:'POST'});return this;},get:function(ns){this.last=ns;return this.listGrids[ns];},ready:function(cb){this.callbacks[this.last]=cb;}};Excelsior.grid.gridPanel=function(){this.init.apply(this,arguments);};NOIX.extend(Excelsior.grid.gridPanel,NOIX.event,{txt:'',search:null,lastClicked:null,clickedPage:null,init:function(id,primaryKey,conf){var that=this;this.search=new Excelsior.grid.searcherCollection();this.conf=conf||{};this.id=id;this.primaryKey=primaryKey;this.conf.id=conf.id||this.id;this.conf.stripeRows=conf.stripeRows||true;this.conf.loadMask=conf.loadMask||true;this.conf.pageSize=conf.pageSize||6;this.conf.viewConfig=conf.viewConfig||{forceFit:true};this.store=new Ext.data.Store({url:Excelsior.siteUrl+'/excelsior/gridhandler',reader:new Excelsior.grid.gridPanel.Reader({root:'results',totalProperty:'total',id:this.primaryKey},this.conf.fields)});this.conf.store=this.store;this.columns=new Ext.grid.ColumnModel(this.conf.columns);this.columns.defaultSortable=true;this.conf.columns=null;this.conf.cm=this.columns;this.Toolbar=new Ext.PagingToolbar({pageSize:this.conf.pageSize,store:this.store,displayInfo:true});this.conf.bbar=this.Toolbar;this.grid=new Ext.grid.GridPanel(this.conf);this.Toolbar.doLoad=function(start){that.load(start)}
this.grid.on('cellclick',function(){that.cellClick.apply(that,arguments);});this.addEvent('cellclick','beforeload','completeload');},cellClick:function(grid,row,col,e){if(this.triggerEvent('cellclick',grid,row,col,e)!==false){this.clickedPage=this.Toolbar.field.dom.value;var record=grid.getStore().getAt(row);var id=record.get(this.primaryKey);this.lastClicked=record;if(this.conf.form){Excelsior.form.get(this.conf.form).select(id);}}},getStore:function(){return this.store;},getGridPanel:function(){return this.grid;},load:function(start,options){var that=this;var pars={};pars.start=start||0;pars.limit=this.conf.pageSize;pars.id=this.id;pars.primaryKey=this.primaryKey;pars.search=this.search.toJSON();pars._ajax=1;if(options){NOIX.copy(pars,options);}
this.grid.loadMask.show();var resultEvent=this.triggerEvent('beforeload',pars);if(resultEvent!==false){var o=(typeof resultEvent=="object")?resultEvent:pars;this.store.load({params:o,callback:function(r,options,sucess){if(!sucess){var response=new Excelsior.form.response(that.store.reader.response.responseText);var msg=response.getMessage()||Excelsior.lang.grid.storeLoadErrorMessage+that.id;Excelsior.messages.gridMessage(msg);NOIX.debug(msg,'error');}
if(pars.savedItem){that.getGridPanel().getSelectionModel().selectFirstRow();that.lastClicked=that.getStore().getAt(0);}
that.triggerEvent('completeload',options);}});}},registerSearcher:function(arr){var that=this;for(var i=0;i<arr.length;i++){this.search.add(arr[i]);NOIX.get(arr[i].element).onEnter(function(){that.load();});}}});if(typeof Ext!="undefined"){Excelsior.grid.gridPanel.Reader=function(){Excelsior.grid.gridPanel.Reader.parent.constructor.apply(this,arguments);};NOIX.extend(Excelsior.grid.gridPanel.Reader,Ext.data.JsonReader,{response:null,read:function(response){this.response=response;return Excelsior.grid.gridPanel.Reader.parent.read.call(this,response);}});}
Excelsior.grid.searcherCollection=function(){this.init.apply(this,arguments);};Excelsior.grid.searcherCollection.prototype={searchers:[],init:function(){this.searchers=[];},add:function(conf){this.searchers.push(new Excelsior.grid.searcher(conf));},toJSON:function(){if(this.searchers.length<1){return false;}
var j=[];for(var i=0;i<this.searchers.length;i++){var o=this.searchers[i];var v=o.toJSON();if(v!==false){j.push(v);}}
return'[ '+j.join(',')+' ]';}};Excelsior.grid.searcher=function(){this.init.apply(this,arguments);};Excelsior.grid.searcher.prototype={type:null,obj:null,init:function(conf){this.conf=conf;this.conf.type=conf.type||'';this.conf.where=conf.where||'OR';this.obj=NOIX.get(conf.element);this.getType();},getType:function(){if(this.obj.nodeName.toLowerCase()=='input'){this.type=this.obj.type;}
else{this.type=this.obj.nodeName;}},toJSON:function(){var val=jQuery(this.obj).val();if((this.type=="checkbox"||this.type=="radio")&&!this.obj.checked){return false;}
var j=[];j.push('"field": "'+this.conf.field+'"');j.push('"value": "'+val+'"');j.push('"type": "'+this.conf.type+'"');j.push('"where": "'+this.conf.where+'"');if(val){return'{ '+j.join(', ')+' }';}
else{return false;}}};Excelsior.form={listForms:{},create:function(ns,conf){if(typeof this.listForms[ns]!="undefined"){this.listForms[ns]=null;}
if(!document.getElementById(ns)){throw new NOIX.exception('Não foi encontrado o formulario com o id "'+ns+'"');}
this.listForms[ns]=new Excelsior.form.serverForm(ns,conf);},get:function(ns){return this.listForms[ns];}};Excelsior.form.serverForm=function(){this.init.apply(this,arguments);}
NOIX.extend(Excelsior.form.serverForm,NOIX.event,{fieldsToValidate:null,init:function(id,conf){var that=this;this.listeners={};this.fieldsToValidate=[],this.id=id;this.dom=NOIX.get(id);this.url=this.dom.action;this.conf=conf||{};this.conf.grid=this.conf.grid||null;this.conf.btSave=this.conf.btSave||'btSave';this.conf.btDelete=this.conf.btDelete||'btDelete';this.conf.btNew=this.conf.btNew||'btNew';if(this.url.substr(this.url.length-1,1)=='/'){this.url=this.url.substring(-1);}
this.setButtonClick(this.conf.btSave,this.Save);this.setButtonClick(this.conf.btDelete,this.Delete);this.setButtonClick(this.conf.btNew,this.New);var o=(jQuery.browser.msie)?document.body:window;new NOIX.hotkey(o,'Alt + Shift + S',this.Save,this);new NOIX.hotkey(o,'Alt + Shift + Delete',this.Delete,this);new NOIX.hotkey(o,'Alt + Shift + Insert',this.New,this);this.addEvent('beforeselect','completeselect','beforesave','completesave','beforedelete','completedelete','clicknew','beforeclear');jQuery(window).ready(function(){that.validationTags();});},select:function(id){var that=this;var selectAjaxLoad;NOIX.debug('Item selecionado na grid. ID: '+id);if(this.triggerEvent('beforeselect')!==false){jQuery.ajax({url:this.url+'/select',data:{id:id,_ajax:1},beforeSend:function(ajaxObj){Excelsior.window.lock();selectAjaxLoad=new Excelsior.messages.ajaxLoad(ajaxObj,Excelsior.lang.form.selectingMessage);},complete:function(data,textStatus){selectAjaxLoad.unload();var response=new Excelsior.form.response(data.responseText);if(response.status()=="sucess"){that.New();that.dom.on('afterbind',function(){that.triggerEvent('completeselect',response);});that.dom.bind(response.getData());}
Excelsior.window.unlock();Excelsior.messages.serverMessage(response);},type:'POST'});}},Save:function(){if(this.triggerEvent('beforesave')!==false){if(!NOIX.get(this.id)){return false;}
var that=this;var pars=NOIX.get(this.id).serialize();var saveAjaxUnload;for(var i=0;i<this.fieldsToValidate.length;i++){var el=this.fieldsToValidate[i];if(el.validate()!==true){Excelsior.messages.appMessage(el.getError().message);return false;}}
this.lockButtons();NOIX.debug('Salvando dados do formulario. Parametros: '+pars);var ajaxOptions={url:this.url+'/save',data:pars+'&_ajax=1',beforeSend:function(ajaxObj){Excelsior.window.lock();saveAjaxUnload=new Excelsior.messages.ajaxLoad(ajaxObj,Excelsior.lang.form.savingMessage);},complete:function(data,textStatus){saveAjaxUnload.unload();var response=new Excelsior.form.response(data.responseText);if(response.status()=="sucess"){NOIX.debug('Dados salvos com sucesso. Resposta do servidor: '+data.responseText);that.dom.bind(response.getData());if(that.conf.grid){var grid=Excelsior.grid.get(that.conf.grid);var data=response.getData();var idItem=data[grid.primaryKey];}}
if(that.conf.grid){var opt=(idItem?{savedItem:idItem}:null);Excelsior.grid.get(that.conf.grid).load(0,opt);}
that.triggerEvent('completesave',response);Excelsior.window.unlock();that.unlockButtons();Excelsior.messages.serverMessage(response);},type:'POST'};if(jQuery(':file',NOIX.get(this.id)).size()){ajaxOptions.data='_ajax=1';this.dom.ajaxUpload(ajaxOptions);}
else{jQuery.ajax(ajaxOptions);}}},Delete:function(){if(!NOIX.get(this.id)){return false;}
if(!confirm(Excelsior.lang.form.deleteConfirmMessage)){return false;}
if(this.conf.grid){var grid=Excelsior.grid.get(this.conf.grid);}
if(grid){if(!grid.lastClicked){Excelsior.messages.appMessage(Excelsior.lang.form.AnyElementSelectedMessage);return false;}}
var that=this;if(grid&&this.dom.elements[grid.primaryKey].value==''){var name=this.dom.elements[grid.primaryKey].name;var pars=name+'='+grid.lastClicked.get(grid.primaryKey);}
else{var pars=NOIX.get(this.id).serialize();}
var deleteAjaxLoad;NOIX.debug('Excluindo dados do formulário. Parametros: '+pars);if(this.triggerEvent('beforedelete')!==false){this.lockButtons();jQuery.ajax({url:this.url+'/delete',data:pars+'&_ajax=1',beforeSend:function(ajaxObj){Excelsior.window.lock();deleteAjaxLoad=new Excelsior.messages.ajaxLoad(ajaxObj,Excelsior.lang.form.deletingMessage);},complete:function(data,textStatus){deleteAjaxLoad.unload();var response=new Excelsior.form.response(data.responseText);if(that.conf.grid){NOIX.debug('Dados excluidos com sucesso. Resposta do servidor: '+data.responseText);Excelsior.grid.get(that.conf.grid).load();}
that.triggerEvent('completedelete',response);Excelsior.window.unlock();that.unlockButtons();Excelsior.messages.serverMessage(response);if(response.status()=='sucess'){that.New();Excelsior.grid.get(that.conf.grid).lastClicked=null;}},type:'POST'});}},New:function(){if(this.triggerEvent('clicknew')!==false){if(!NOIX.get(this.id)){return false;}
NOIX.get(this.id).clear();this.triggerEvent('beforeclear');}},setButtonClick:function(idButton,callback){var that=this;if(this.dom.elements[idButton]&&this.dom.elements[idButton].length>1){for(var i=0;i<this.dom.elements[idButton].length;i++){jQuery(this.dom.elements[idButton][i],this.dom).click(function(){callback.apply(that);});}}
else if(this.dom.elements[idButton]){jQuery(this.dom.elements[idButton],this.dom).click(function(){callback.apply(that);});}},lockButtons:function(){this.lockSave();this.lockNew();this.lockDelete();},lockSave:function(){if(this.dom.elements[this.conf.btSave]&&this.dom.elements[this.conf.btSave].length>1){for(var i=0;i<this.dom.elements[this.conf.btSave].length;i++){jQuery(this.dom.elements[this.conf.btSave][i],this.dom).attr('disabled',true);}}
else if(this.dom.elements[this.conf.btSave]){jQuery(this.dom.elements[this.conf.btSave],this.dom).attr('disabled',true);}},lockNew:function(){if(this.dom.elements[this.conf.btNew]&&this.dom.elements[this.conf.btNew].length>1){for(var i=0;i<this.dom.elements[this.conf.btNew].length;i++){jQuery(this.dom.elements[this.conf.btNew][i],this.dom).attr('disabled',true);}}
else if(this.dom.elements[this.conf.btNew]){jQuery(this.dom.elements[this.conf.btNew],this.dom).attr('disabled',true);}},lockDelete:function(){if(this.dom.elements[this.conf.btDelete]&&this.dom.elements[this.conf.btDelete].length>1){for(var i=0;i<this.dom.elements[this.conf.btDelete].length;i++){jQuery(this.dom.elements[this.conf.btDelete][i],this.dom).attr('disabled',true);}}
else if(this.dom.elements[this.conf.btDelete]){jQuery(this.dom.elements[this.conf.btDelete],this.dom).attr('disabled',true);}},unlockButtons:function(){this.unlockSave();this.unlockNew();this.unlockDelete();},unlockSave:function(){if(this.dom.elements[this.conf.btSave]&&this.dom.elements[this.conf.btSave].length>1){for(var i=0;i<this.dom.elements[this.conf.btSave].length;i++){jQuery(this.dom.elements[this.conf.btSave][i],this.dom).removeAttr('disabled');}}
else if(this.dom.elements[this.conf.btSave]){jQuery(this.dom.elements[this.conf.btSave],this.dom).removeAttr('disabled');}},unlockNew:function(){if(this.dom.elements[this.conf.btNew]&&this.dom.elements[this.conf.btNew].length>1){for(var i=0;i<this.dom.elements[this.conf.btNew].length;i++){jQuery(this.dom.elements[this.conf.btNew][i],this.dom).removeAttr('disabled');}}
else if(this.dom.elements[this.conf.btNew]){jQuery(this.dom.elements[this.conf.btNew],this.dom).removeAttr('disabled');}},unlockDelete:function(){if(this.dom.elements[this.conf.btDelete]&&this.dom.elements[this.conf.btDelete].length>1){for(var i=0;i<this.dom.elements[this.conf.btDelete].length;i++){jQuery(this.dom.elements[this.conf.btDelete][i],this.dom).removeAttr('disabled');}}
else if(this.dom.elements[this.conf.btDelete]){jQuery(this.dom.elements[this.conf.btDelete],this.dom).removeAttr('disabled');}},validationTags:function(){var that=this;jQuery('*[validacao]',this.dom).each(function(){var vals=jQuery(this).attr('validacao').split(',');for(var i=0;i<vals.length;i++){var val=vals[i].split(':');var el=NOIX.get(this);el.applyValidation.apply(el,val);that.fieldsToValidate.push(el);}});},on:function(eventName,cb,scope){var s=scope||this;this.addListener(eventName,cb,s);}});Excelsior.form.response=function(){this.init.apply(this,arguments);};Excelsior.form.response.prototype={_res:null,init:function(res){if(typeof res=="undefined"||res==''){this._res={status:'error',message:'',data:''};}
else if(typeof res=="string"){eval('this._res = '+res);}
else if(typeof res=="object"){this._res=data;}},status:function(){return this._res.status;},getMessage:function(){return this._res.message;},getData:function(){return this._res.data}};Excelsior.form.select=function(sel){if(typeof this.selectList=="undefined"){this.selectList={};}
if(!this.selectList[sel]){this.selectList[sel]=new Excelsior.form.select.serverSelect(sel);}
return this.selectList[sel];};Excelsior.form.select.serverSelect=function(){this.init.apply(this,arguments);};NOIX.extend(Excelsior.form.select.serverSelect,NOIX.event,{id:null,listeners:{},init:function(id){this.listeners={};this.id=id;this.addEvent('loadingsend','completesend','loadingget','completeget');},setSender:function(button,sel){var that=this;jQuery('#'+button).click(function(e){that.send(sel);});},send:function(sel){var that=this;if(this.triggerEvent('loadingsend')!==false){var el=NOIX.get(this.id);var setResponse=false;var removeResponse=false;var setAjaxLoad,removeAjaxLoad;jQuery.ajax({url:Excelsior.siteUrl+'/excelsior/selecthandler/set',type:'POST',data:{id:sel,options:el.toJson(),_ajax:1},complete:function(data,textStatus){var response=new Excelsior.form.response(data.responseText);setResponse=response;if(setResponse&&removeResponse){that.triggerEvent('completesend',setResponse,removeResponse);}}});jQuery.ajax({url:Excelsior.siteUrl+'/excelsior/selecthandler/remove',type:'POST',data:{id:this.id,options:el.toJson(),_ajax:1},complete:function(data,textStatus){var response=new Excelsior.form.response(data.responseText);removeResponse=response;if(setResponse&&removeResponse){that.triggerEvent('completesend',setResponse,removeResponse);}}});el.send(sel);}},get:function(){var that=this;if(this.triggerEvent('loadingget')!==false){jQuery.ajax({url:Excelsior.siteUrl+'/excelsior/selecthandler/get',type:'POST',data:{id:that.id,_ajax:1},beforeSend:function(ajaxObj){NOIX.get(that.id).clear();NOIX.get(that.id).setMessage();},complete:function(data,textStatus){NOIX.get(that.id).clear();NOIX.get(that.id).appendJson(data.responseText);that.triggerEvent('completeget');}});}},reset:function(){var that=this;jQuery.ajax({url:Excelsior.siteUrl+'/excelsior/selecthandler/reset',type:'POST',data:{id:that.id,_ajax:1},beforeSend:function(ajaxObj){NOIX.get(that.id).clear();}});}});Excelsior.messages={_ajaxTimeout:null,appMessage:function(msg){Ext.MessageBox.alert('Resposta do Servidor',msg);},confirmMessage:function(title,msg,fn,scope){Ext.MessageBox.confirm(title,msg,fn,scope);},serverMessage:function(response){if(response.getMessage()){Ext.MessageBox.alert('Resposta do Servidor',response.getMessage());}},gridMessage:function(msg){Ext.MessageBox.alert('Resposta da Grid',msg);},ajaxShowMessage:function(msg){Ext.MessageBox.show({msg:msg,progressText:'Aguarde',width:300,wait:true,waitConfig:{interval:200},icon:'ext-mb-download',animEl:'mb7'});},ajaxHideMessage:function(){Ext.MessageBox.hide();}};Excelsior.messages.ajaxLoad=function(){this.init.apply(this,arguments);};Excelsior.messages.ajaxLoad.prototype={_ajaxTimeout:null,init:function(ajaxObj,val){var that=this;var v=val||Excelsior.lang.messages.aguardeMessage;NOIX.debug('Executando ajax...');this._ajaxTimeout=setTimeout(function(){that.unload();NOIX.debug('Mensagem de aguarde escondida. Ajax demorou mas que o tempo permitido.','warn');Excelsior.window.unlock();NOIX.debug('Tela destrancada. Ajax demorou mas que o tempo permitido.','warn');ajaxObj.abort();NOIX.debug('Requisicao ajax abortada','warn');},Excelsior.ajaxTimeout);Excelsior.messages.ajaxShowMessage(v);},unload:function(){clearTimeout(this._ajaxTimeout);Excelsior.messages.ajaxHideMessage();}};Excelsior.ajax={evalScript:function(){if(NOIX.get('excelsior-ajax-eval')){var e=NOIX.get('excelsior-ajax-eval').innerHTML;eval(e);}}};var Ex=Excelsior;