/*ADOBE SYSTEMS INCORPORATED
Copyright 2007 Adobe Systems Incorporated
All Rights Reserved.

NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the
terms of the Adobe license agreement accompanying it.  If you have received this file from a
source other than Adobe, then your use, modification, or distribution of it requires the prior
written permission of Adobe.*/
cfinitgrid=function(){
if(!ColdFusion.Grid){
ColdFusion.Grid={};
}
var $G=ColdFusion.Grid;
var $L=ColdFusion.Log;
$G.init=function(id,_2b,_2c,_2d,_2e,_2f,_30,_31,_32,_33,_34,_35,_36,_37,_38,_39,_3a,_3b,_3c,_3d,_3e,_3f){
var _40;
var _41=new Ext.grid.ColumnModel(_31);
var _42={ds:_32,cm:_41,autoSizeColumns:_30,autoSizeHeaders:_30,autoHeight:_34,autoWidth:_33,stripeRows:_35};
var _43=ColdFusion.objectCache[id];
_43.bindOnLoad=_2f;
_43.dynamic=_2d;
_43.styles=_36;
_42.selModel=new Ext.grid.RowSelectionModel({singleSelect:true});
if(!_2d){
_32.load();
}
if(_2e){
_40=new Ext.grid.EditorGrid(_43.gridId,_42);
}else{
_40=new Ext.grid.Grid(_43.gridId,_42);
}
_43.grid=_40;
_40.render();
if(_2e&&!_2d&&(_3a||_3b)){
var _44=_40.getView().getFooterPanel(true);
var _45=new Ext.Toolbar(_44);
if(_3a){
_45.addButton({text:_3a,handler:$G.insertRow,scope:_43});
}
if(_3b){
_45.addButton({text:_3b,handler:$G.deleteRow,scope:_43});
}
_40.autoSize();
}
if(_2d){
_32.addListener("load",$G.Actions.onLoad,_43,true);
_32._cf_errorHandler=_3e;
_32.proxy._cf_actions=_43;
var _44=_40.getView().getFooterPanel(true);
var _45=new Ext.PagingToolbar(_44,_32,{pageSize:_37,beforePageText:CFMessage["grid.init.toolbar.page"]||"Page",afterPageText:CFMessage["grid.init.toolbar.of"]||"of {0}"});
if(_3d&&_3b){
_45.addSeparator();
var _46=new Ext.ToolbarButton({text:_3b});
_46.setHandler($G.deleteRow,_43);
_45.addButton(_46);
}
_32.load({params:{start:0,limit:_37}});
}else{
$G.applyStyles(_43);
}
if(_3f){
ColdFusion.Bind.register(_3f,{actions:_43},$G.bindHandler,false);
}
$L.info("grid.init.created","widget",[id]);
_43.init(id,_2b,_2c,_3c,_2d,_2e,_3d,_3e,_39,_37,_38);
};
$G.applyStyles=function(_47){
if(_47.stylesApplied){
return;
}
Ext.util.CSS.createStyleSheet(_47.styles);
_47.stylesApplied=true;
};
$G.bindHandler=function(e,_49){
$G.refresh(_49.actions.id);
};
$G.bindHandler._cf_bindhandler=true;
$G.refresh=function(_4a,_4b){
var _4c=ColdFusion.objectCache[_4a];
if(_4c&&$G.Actions.prototype.isPrototypeOf(_4c)==true){
var _4d=_4c.grid.getDataSource();
if(_4c.dynamic){
_4c.editOldValue=null;
_4c.selectedRow=-1;
if(_4b){
_4d.reload();
}else{
_4d.reload({params:{start:0,limit:_4c.pageSize}});
}
}
}else{
ColdFusion.handleError(null,"grid.refresh.notfound","widget",[_4a],null,null,true);
return;
}
$L.info("grid.refresh.success","widget",[_4a]);
};
$G.sort=function(_4e,_4f,_50){
var _51=ColdFusion.objectCache[_4e];
if(!_51){
ColdFusion.handleError(null,"grid.sort.notfound","widget",[_4e],null,null,true);
return;
}
_4f=_4f.toUpperCase();
var _52=-1;
var _53=_51.grid.getColumnModel().config;
for(var i=0;i<_53.length-1;i++){
if(_4f==_53[i].colName){
_52=i;
break;
}
}
if(_52==-1){
ColdFusion.handleError(null,"grid.sort.colnotfound","widget",[_4f,_4e],null,null,true);
return;
}
if(!_50){
_50="ASC";
}
_50=_50.toUpperCase();
if(_50!="ASC"&&_50!="DESC"){
ColdFusion.handleError(null,"grid.sort.invalidsortdir","widget",[_50,_4e],null,null,true);
return;
}
var _55=_51.grid.getDataSource();
_55.sort(_4f,_50);
};
$G.getGridObject=function(_56){
if(!_56){
ColdFusion.handleError(null,"grid.getgridobject.missinggridname","widget",null,null,null,true);
return;
}
var _57=ColdFusion.objectCache[_56];
if(_57==null||$G.Actions.prototype.isPrototypeOf(_57)==false){
ColdFusion.handleError(null,"grid.getgridobject.notfound","widget",[_56],null,null,true);
return;
}
return _57.grid;
};
$G.Actions=function(_58){
this.gridId=_58;
this.init=$G.Actions.init;
this.onChangeHandler=$G.Actions.onChangeHandler;
this.selectionChangeEvent=new ColdFusion.Event.CustomEvent("cfGridSelectionChange",_58);
this.fireSelectionChangeEvent=$G.fireSelectionChangeEvent;
this._cf_getAttribute=$G.Actions._cf_getAttribute;
this._cf_register=$G.Actions._cf_register;
};
$G.Actions.init=function(id,_5a,_5b,_5c,_5d,_5e,_5f,_60,_61,_62,_63){
this.id=id;
this.gridName=_5a;
this.formId=_5b;
this.form=document.getElementById(_5b);
this.cellClickInfo=_5c;
this.edit=_5e;
this.onChangeFunction=_5f;
this.onErrorFunction=_60;
this.preservePageOnSort=_61;
this.pageSize=_62;
this.selectedRow=-1;
this.selectOnLoad=_63;
this.grid.addListener("cellclick",$G.cellClick,this,true);
this.editField=document.createElement("input");
this.editField.setAttribute("name",_5a);
this.editField.setAttribute("type","hidden");
this.form.appendChild(this.editField);
if(_5e){
if(!_5d){
var _64=this.grid.getColumnModel().config;
this.editFieldPrefix="__CFGRID__EDIT__=";
this.editFieldPrefix+=_64.length-1+$G.Actions.fieldSep;
for(var i=0;i<_64.length-1;i++){
if(i>0){
this.editFieldPrefix+=$G.Actions.fieldSep;
}
this.editFieldPrefix+=_64[i].colName;
this.editFieldPrefix+=$G.Actions.valueSep;
if(_64[i].editor){
this.editFieldPrefix+="Y";
}else{
this.editFieldPrefix+="N";
}
}
this.editFieldPrefix+=$G.Actions.fieldSep;
this.editFieldState=[];
this.editFieldState.length=this.grid.getDataSource().getTotalCount();
$G.Actions.computeEditField(this);
}
this.grid.addListener("beforeedit",$G.Actions.beforeEdit,this,true);
this.grid.addListener("afteredit",$G.Actions.afterEdit,this,true);
}
if(_5d){
this.grid.getDataSource().addListener("beforeload",$G.Actions.beforeLoad,this,true);
}
this.grid.getSelectionModel().addListener("rowselect",$G.rowSelect,this,true);
this.grid.getSelectionModel().addListener("beforerowselect",$G.beforeRowSelect,this,true);
if(_63){
this.grid.getSelectionModel().selectFirstRow();
}
};
$G.Actions.beforeLoad=function(_66,_67){
var _68=_66.getSortState();
var _69=(_68.field!=this.sortCol||_68.direction!=this.sortDir);
if(_69&&!this.preservePageOnSort){
_67.params.start=0;
}
this.sortCol=_68.field;
this.sortDir=_68.direction;
};
$G.Actions.onLoad=function(){
this.editOldValue=null;
this.selectedRow=-1;
var _6a=this.dynamic?0:1;
if((this.bindOnLoad||!this.dynamic)&&this.selectOnLoad){
this.grid.getSelectionModel().selectRow(_6a,false);
}
};
$G.Actions._cf_getAttribute=function(_6b){
_6b=_6b.toUpperCase();
var _6c=this.selectedRow;
var _6d=null;
if(_6c!=0&&(!_6c||_6c==-1)){
return _6d;
}
var ds=this.grid.getDataSource();
var _6f=(this.dynamic)?ds.getAt(_6c):ds.getById(_6c);
_6d=_6f.get(_6b);
return _6d;
};
$G.Actions._cf_register=function(_70,_71,_72){
this.selectionChangeEvent.subscribe(_71,_72);
};
$G.rowSelect=function(_73,row){
var _75="";
var _76=_73.getSelected();
var _77=_76.get("CFGRIDROWINDEX")||row;
if(this.selectedRow!=_77){
this.selectedRow=_77;
var _78=true;
for(col in _76.data){
if(col=="CFGRIDROWINDEX"){
continue;
}
if(!_78){
_75+="; ";
}
_75+="__CFGRID__COLUMN__="+col+"; ";
_75+="__CFGRID__DATA__="+_76.data[col];
_78=false;
}
this.fireSelectionChangeEvent();
}
this.editField.setAttribute("value",_75);
};
$G.beforeRowSelect=function(_79,row){
var ds=this.grid.getDataSource();
var _7c=ds.getAt(row);
return !$G.isNullRow(_7c.data);
};
$G.isNullRow=function(_7d){
var _7e=true;
for(col in _7d){
if(_7d[col]!=null){
_7e=false;
break;
}
}
return _7e;
};
$G.fireSelectionChangeEvent=function(){
$L.info("grid.fireselectionchangeevent.fire","widget",[this.id]);
this.selectionChangeEvent.fire();
};
$G.cellClick=function(_7f,_80,_81){
var _82=this.cellClickInfo.colInfo[_81];
if(_82){
var _83=_7f.getSelectionModel().getSelected();
var url=_83.get(_82.href.toUpperCase());
if(!url){
url=_82.href;
}
var _85=_82.hrefKey;
var _86=_82.target;
var _87=this.appendKey;
if(this.cellClickInfo.appendKey){
var _88;
if(_85||_85==0){
var _89=_7f.getDataSource().getAt(_80);
var _8a=_7f.getColumnModel().config[_85].dataIndex;
_88=_89.get(_8a);
}else{
var _8b=this.grid.getColumnModel().config;
_88=_83.get(_8b[0].dataIndex);
for(var i=1;i<_8b.length-1;i++){
_88+=","+_83.get(_8b[i].dataIndex);
}
}
if(url.indexOf("?")!=-1){
url+="&CFGRIDKEY="+_88;
}else{
url+="?CFGRIDKEY="+_88;
}
}
if(_86){
_86=_86.toLowerCase();
if(_86=="_top"){
_86="top";
}else{
if(_86=="_parent"){
_86="parent";
}else{
if(_86=="_self"){
_86=window.name;
}else{
if(_86=="_blank"){
window.open(encodeURI(url));
return;
}
}
}
}
if(!parent[_86]){
ColdFusion.handleError(null,"grid.cellclick.targetnotfound","widget",[_86]);
return;
}
parent[_86].location=encodeURI(url);
}else{
window.location=encodeURI(url);
}
}
};
$G.insertRow=function(){
var _8d={action:"I",values:[]};
var _8e=this.grid.getColumnModel();
var _8f=this.grid.getDataSource();
var _90={};
for(var i=0;i<_8e.getColumnCount()-1;i++){
var _92="";
var _93=_8e.getCellEditor(i,0);
if(_93&&Ext.form.Checkbox.prototype.isPrototypeOf(_93.field)){
_92=false;
}
_8d.values[i]=[_92,_92];
_90[_8e.getDataIndex(i)]=_92;
}
_90["CFGRIDROWINDEX"]=_8f.getCount()+1;
_8f.add(new Ext.data.Record(_90));
this.editFieldState.push(_8d);
$G.Actions.computeEditField(this);
};
$G.deleteRow=function(){
var _94=this.selectedRow;
if(_94==-1){
return;
}
if(this.onChangeFunction){
this.onChangeHandler("D",_94,null,$G.deleteRowCallback);
}else{
if(!this.dynamic){
var _95=this.editFieldState[_94-1];
if(_95){
_95.action="D";
}else{
_95=$G.Actions.initEditState(this,"D",_94);
}
$G.Actions.computeEditField(this);
this.grid.stopEditing();
this.selectedRow=-1;
var _96=this.grid.getDataSource();
_96.remove(this.grid.getSelectionModel().getSelected());
}
}
};
$G.deleteRowCallback=function(_97,_98){
var _99=_98._cf_grid.getDataSource();
var _9a=_98._cf_grid.actions;
_99.reload();
};
$G.Actions.beforeEdit=function(_9b){
if($G.isNullRow(_9b.record.data)){
return false;
}
this.editColumn=_9b.column;
this.editOldValue=_9b.value;
};
$G.Actions.afterEdit=function(_9c){
var _9d=_9c.value;
if(this.onChangeFunction){
this.onChangeHandler("U",this.selectedRow,_9c);
}else{
if(!this.dynamic){
var _9e=this.editFieldState[this.selectedRow-1];
if(_9e){
_9e.values[_9c.column][1]=_9d;
}else{
_9e=$G.Actions.initEditState(this,"U",this.selectedRow);
var _9f=this.editOldValue+"";
_9e.values[_9c.column][0]=_9f;
_9e.values[_9c.column][1]=_9d;
}
$G.Actions.computeEditField(this);
}
}
this.editOldValue=null;
this.fireSelectionChangeEvent();
};
$G.Actions.onChangeHandler=function(_a0,_a1,_a2,_a3){
var _a4={};
var _a5={};
var _a6=_a2?_a2.record.data:this.grid.getDataSource().getAt(_a1).data;
for(col in _a6){
_a4[col]=_a6[col];
}
if(_a0=="U"){
_a4[_a2.field]=_a2.originalValue;
_a5[_a2.field]=_a2.value;
}
this.onChangeFunction(_a0,_a4,_a5,_a3,this.grid,this.onErrorFunction);
};
$G.Actions.initEditState=function(_a7,_a8,_a9){
var _aa={action:_a8,values:[]};
var _ab=_a7.grid.getColumnModel();
var _ac=_ab.getColumnCount()-1;
var _ad=_a7.grid.getDataSource().getById(_a9);
_aa.values.length=_ac;
for(var i=0;i<_ac;i++){
var _af=_ad.get(_ab.getDataIndex(i));
_aa.values[i]=[_af,_af];
}
_a7.editFieldState[_a9-1]=_aa;
return _aa;
};
$G.Actions.fieldSep=eval("'\\u0001'");
$G.Actions.valueSep=eval("'\\u0002'");
$G.Actions.nullValue=eval("'\\u0003'");
$G.Actions.computeEditField=function(_b0){
var _b1=_b0.editFieldPrefix;
var _b2=_b0.editFieldState;
var _b3=0;
var _b4="";
for(var i=0;i<_b2.length;i++){
var _b6=_b2[i];
if(_b6){
_b3++;
_b4+=$G.Actions.fieldSep;
_b4+=_b6.action+$G.Actions.valueSep;
var _b7=_b6.values;
for(var j=0;j<_b7.length;j++){
if(j>0){
_b4+=$G.Actions.valueSep;
}
var _b9=($G.Actions.isNull(_b7[j][0]))?$G.Actions.nullValue:_b7[j][0];
var _ba=($G.Actions.isNull(_b7[j][1]))?$G.Actions.nullValue:_b7[j][1];
_b4+=_ba;
if(_b6.action=="U"){
_b4+=$G.Actions.valueSep+_b9;
}
}
}
}
_b1+=_b3+_b4;
_b0.editField.setAttribute("value",_b1);
};
$G.Actions.isNull=function(val){
var ret=(val==null||typeof (val)=="undefined"||val.length==0);
return ret;
};
$G.loadData=function(_bd,_be){
_be._cf_gridDataProxy.loadResponse(_bd,_be);
var _bf=ColdFusion.objectCache[_be._cf_gridname];
$G.applyStyles(_bf);
$L.info("grid.loaddata.loaded","widget",[_be._cf_gridname]);
};
$G.ExtProxy=function(_c0,_c1){
$G.ExtProxy.superclass.constructor.call(this);
this.bindHandler=_c0;
this.errorHandler=_c1;
};
Ext.extend($G.ExtProxy,Ext.data.DataProxy,{_cf_firstLoad:true,load:function(_c2,_c3,_c4,_c5,arg){
if(!this._cf_actions.bindOnLoad){
var _c7={"_cf_reader":_c3,"_cf_grid_errorhandler":this.errorHandler,"_cf_scope":_c5,"_cf_gridDataProxy":this,"_cf_gridname":this._cf_gridName,"_cf_arg":arg,"_cf_callback":_c4,"ignoreData":true};
var _c8=[];
for(i=0;i<_c2.limit;i++){
_c8.push(new Ext.data.Record({}));
}
this.loadResponse(_c8,_c7);
this._cf_actions.bindOnLoad=true;
}else{
var _c9=(_c2.start/_c2.limit)+1;
if(!_c2.sort){
_c2.sort="";
}
if(!_c2.dir){
_c2.dir="";
}
this.bindHandler(this,_c9,_c2.limit,_c2.sort,_c2.dir,this.errorHandler,_c4,_c5,arg,_c3);
}
},loadResponse:function(_ca,_cb){
var _cc=null;
if(_cb.ignoreData){
_cc={success:true,records:_ca,totalRecords:_ca.length};
}else{
var _cd;
if(!_ca){
_cd="grid.extproxy.loadresponse.emptyresponse";
}else{
if(!_ca.TOTALROWCOUNT&&_ca.TOTALROWCOUNT!=0){
_cd="grid.extproxy.loadresponse.totalrowcountmissing";
}else{
if(!ColdFusion.Util.isInteger(_ca.TOTALROWCOUNT)){
_cd="grid.extproxy.loadresponse.totalrowcountinvalid";
}else{
if(!_ca.QUERY){
_cd="grid.extproxy.loadresponse.querymissing";
}else{
if(!_ca.QUERY.COLUMNS||!ColdFusion.Util.isArray(_ca.QUERY.COLUMNS)||!_ca.QUERY.DATA||!ColdFusion.Util.isArray(_ca.QUERY.DATA)||(_ca.QUERY.DATA.length>0&&!ColdFusion.Util.isArray(_ca.QUERY.DATA[0]))){
_cd="grid.extproxy.loadresponse.queryinvalid";
}
}
}
}
}
if(_cd){
ColdFusion.handleError(_cb._cf_grid_errorHandler,_cd,"widget");
this.fireEvent("loadexception",this,_cb,_ca,e);
return;
}
_cc=_cb._cf_reader.readRecords(_ca);
}
this.fireEvent("load",this,_cb,_cb._cf_arg);
_cb._cf_callback.call(_cb._cf_scope,_cc,_cb._cf_arg,true);
},update:function(_ce){
},updateResponse:function(_cf){
}});
$G.ExtReader=function(_d0){
this.recordType=Ext.data.Record.create(_d0);
};
Ext.extend($G.ExtReader,Ext.data.DataReader,{readRecords:function(_d1){
var _d2=[];
var _d3=_d1.QUERY.COLUMNS;
var _d4=_d1.QUERY.DATA;
for(var i=0;i<_d4.length;i++){
var _d6={};
for(var j=0;j<_d3.length;j++){
_d6[_d3[j]]=_d4[i][j];
}
_d2.push(new Ext.data.Record(_d6));
}
return {success:true,records:_d2,totalRecords:_d1.TOTALROWCOUNT};
}});
};
cfinitgrid();
