var GridSolution=new Class({Implements:[Events,Options],getOptions:function(){return{showHeader:true,headCellHeight:26,cellHeight:20,resizeColumns:true,selectRow:true,sortOn:null,sortBy:"ASC",getDataUrl:null,page:1,perPageOptions:[10,20,50],perPage:20,header:null,tip:null,imagesPath:"images",autoSaveRow:false,autoFocus:true,dateFormat:"2999-mm-dd",dateTimeFormat:"2999-mm-dd",showNavigation:true,onHydrated:function(){},onSaved:function(){},customRows:null}},initialize:function(container,options){this.cookie=new GridSolutionCookie(this,10);this.setOptions(this.getOptions(),options);if(this.cookie.read("header")){this.options.header=eval(this.cookie.read("header"))}this.className="GridSolution";this.container=container;this.container.dataGrid=this;if(!this.container){return false}this.levelCount=0;this.columnCount=0;this.level=0;this.count=0,this.columns=new Array();this.page=this.options.page;if(this.cookie.read("sort_on")){this.sortOn=this.cookie.read("sort_on")}else{this.sortOn=this.options.sortOn}if(this.cookie.read("sort_by")){this.sortBy=this.cookie.read("sort_by")}else{this.sortBy=this.options.sortBy}if(this.cookie.read("per_page")){this.perPage=this.cookie.read("per_page")}else{this.perPage=this.options.perPage}this.container.addClass("grid-solution");this.data=null;this.render();this.loadData();this.currentRow=null;this.currentCell=null;this.isOnEdit=false;this.filtersChanged=false;this.storedCustomRows=new Array();this.persistState();return this},render:function(){this.gridContainer=new Element("div",{"class":"grid_container",style:"width : "+this.getGridWidth()+"px;"});var a;if(this.options.showHeader){a=new Element("div",{"class":"header_container",style:""})}else{a=new Element("div",{"class":"header_container",style:"style : display none;"})}this.dataFlowContainer=new Element("div",{style:""});this.navigationContainer=new Element("div",{style:"height : "+this.options.headCellHeight+"px"});this.rowContainer=new Element("div").addClass("row_container");this.customRowContainer=new Element("div").addClass("custom_row_container");this.headerContainer=a;this.gridContainer.appendChild(a);this.dragContainer=new Element("div",{style:""});this.gridContainer.appendChild(this.dragContainer);this.dataFlowContainer.appendChild(this.rowContainer);this.dataFlowContainer.appendChild(this.customRowContainer);this.gridContainer.appendChild(this.dataFlowContainer).appendChild(this.navigationContainer);this.renderHeader();this.container.appendChild(this.gridContainer);this.headerContainer.setStyle("height",this.getHeaderHeight());this.initEvents();this.renderNavigation();if(this.options.autoFocus){this.getFocusOn()}},initEvents:function(){this.gridContainer.focus();this.gridContainer.addEvent("keydown",function(a){if(a.key=="down"){this.getNextRow();return false}if(a.key=="up"){this.getPreviousRow();return false}if(a.key=="enter"){this.editCurrentRow();return false}if(a.key=="esc"){if(this.gridContainer.getParent(".expand_display")){this.gridContainer.getParent(".expand_display").dataGrid.getFocusOn();this.gridContainer.getParent(".expand_display").destroy();return false}}}.bind(this))},renderHeader:function(){this.columns.empty();this.columnCount=0;this.headerContainer.empty();this.options.header.each(function(b){b.renderHeader(this,this)}.bind(this));this.gridContainer.setStyle("width",this.getGridWidth());var a=new Tips(".tips");this.initDatePicker();this.displaySort()},updateNavigation:function(){this.navigationFirst.removeEvents("click").addEvent("click",function(a){this.page=1;this.loadData()}.bind(this));this.navigatioPrevious.removeEvents("click").addEvent("click",function(a){if(this.page>1){this.page-=1;this.loadData()}}.bind(this));this.pageInput.setProperty("value",this.page).removeEvents("keyup").addEvent("keyup",function(a){if(a.key=="enter"&&a.target.value){this.page=a.target.value;this.loadData()}}.bind(this));this.navigationNext.removeEvents("click").addEvent("click",function(a){if(this.page<parseInt(this.count/this.perPage)+1){this.page+=1;this.loadData()}}.bind(this));this.navigationLast.removeEvents("click").addEvent("click",function(a){this.page=parseInt(this.count/this.perPage)+1;this.loadData()}.bind(this));this.navigationCounter.set("text","   "+parseInt(((this.page-1)*this.perPage)+1)+"..."+parseInt(((this.page)*this.perPage))+" / "+this.count)},renderNavigation:function(){this.navigationContainer.addClass("navigation");this.navigationContainer.ul=new Element("ul",{style:"padding : 0 0 0 10px; line-height :"+this.options.headCellHeight+"px;"});var a=new Element("li",{style:"display : block; float : left; line-height :"+this.options.headCellHeight+"px;"});var b=new Element("select",{name:"per_page",style:"font-size : 10px;"});this.options.perPageOptions.each(function(c){var d=new Element("option").setProperty("value",c).set("text",c);if(c==this.perPage){d.setProperty("selected","true")}b.appendChild(d)}.bind(this));b.addEvent("change",function(c){this.perPage=c.target.value;this.cookie.write("per_page",this.perPage);this.loadData()}.bind(this));a.appendChild(b);this.navigationContainer.ul.appendChild(a);this.navigationContainer.appendChild(this.navigationContainer.ul);a=new Element("li",{style:"display : block; float : left; line-height :"+this.options.headCellHeight+"px; margin-left : 10px;"});this.navigationFirst=new Element("span",{html:" |< ",style:"cursor : pointer;  line-height :"+this.options.headCellHeight+"px;"});a.appendChild(this.navigationFirst);this.navigatioPrevious=new Element("span",{html:" << ",style:"cursor : pointer; line-height :"+this.options.headCellHeight+"px;"});a.appendChild(this.navigatioPrevious);this.pageInput=new Element("input",{style:"width :30px;"}).setProperty("name","page").setProperty("type","text");a.appendChild(this.pageInput);this.navigationNext=new Element("span",{html:" >> ",style:"cursor : pointer; line-height :"+this.options.headCellHeight+"px;"});a.appendChild(this.navigationNext);this.navigationLast=new Element("span",{html:" >| ",style:"cursor : pointer; line-height :"+this.options.headCellHeight+"px;"});a.appendChild(this.navigationLast);this.navigationCounter=new Element("span");a.adopt(this.navigationCounter);this.navigationContainer.ul.appendChild(a)},renderBorder:function(){this.dragContainer.empty().setStyle("top","0").setStyle("left","0").setStyle("position","absolute");this.columns.each(function(b){b.createBorder()});var a=new Tips(".tips")},getGridWidth:function(){width=0;this.options.header.each(function(a){width+=parseInt(a.getWidth())});return width},getGridHeight:function(){return(this.getHeaderHeight()+(this.dataFlowContainer.getDimensions().y))},getRowContainerHeight:function(){return parseInt(this.getGridHeight()-this.getHeaderHeight())},getHeaderHeight:function(){return parseInt((this.options.headCellHeight+1)*this.levelCount)},loadData:function(){this.rowContainer.setStyle("opacity","0.5");var a="";this.headerContainer.getElements("input.input_filter").each(function(b){a+=b.getProperty("filter")+"="+b.value+"|"});if(this.jsonRequest){this.jsonRequest.cancel()}this.jsonRequest=new Request.JSON({url:this.options.getDataUrl,onComplete:function(b){this.filtersChanged=false;this.hydrate(b);this.updateNavigation();this.rowContainer.setStyle("opacity","1");this.initDatePicker()}.bind(this)}).post({perpage:this.perPage,page:this.page,sorton:this.sortOn,sortby:this.sortBy,filters:a})},initDatePicker:function(){new InputMask.Date(".date_mask",{mask:this.options.dateFormat,onError:function(b,a){b.highlight("#f88");if(b.cell){b.cell.showErrors(b.cell.inputObject.options.onErrorMessage.replace("%key",a))}}});new InputMask.Date(".date_time_mask",{mask:this.options.dateTimeFormat})},hydrate:function(a){this.rows=null;this.rows=new Array();this.count=a.count;this.rowContainer.empty();this.datas=a;var b=0;a.data.each(function(d,c){var e=new GridSolutionRow();e.index=c;b=c;e.hydrate(d);e.render(this,this.rowContainer);this.rows.push(e)}.bind(this));if(this.storedCustomRows.length==0&&this.options.customRows){this.options.customRows.each(function(c){c.render(this,this.customRowContainer);b++;this.storedCustomRows.push(c);c.index=b;this.rows.push(c)}.bind(this))}this.renderBorder();this.displaySort();this.fireEvent("hydrated")},destroyTips:function(){this.container.getElements("div.expand_display").each(function(a){a.destroy()});this.container.getChildren("div.tip").each(function(a){a.getParent().destroy()});this.container.getChildren("div.fieldError").each(function(a){a.destroy()})},getNextRow:function(){if(!this.currentRow){this.rows[0].focus()}else{if(!this.currentRow.isLast()){this.currentRow.unFocus();this.rows[this.currentRow.index+1].focus()}}},getPreviousRow:function(){if(this.currentRow&&!this.currentRow.index==0){this.currentRow.unFocus();this.rows[this.currentRow.index-1].focus()}},editCurrentRow:function(){if(this.currentRow){this.currentRow.focusNextEditableField(0)}},getFocusOn:function(){var a=false;this.headerContainer.getElements(".input_filter").each(function(b){if(!a){a=true;b.focus()}});if(!a&&this.pageInput){a=true;this.pageInput.focus()}if(!a){if(this.container.getParent("div.expand_display")){this.container.getParent("div.expand_display").getFirst("a").focus()}}},displaySort:function(){this.headerContainer.getElements("div.column").each(function(a){if(a.getProperty("model")==this.sortOn){if(this.sortBy=="DESC"){a.addClass("desc").removeClass("asc")}else{a.addClass("asc").removeClass("desc")}}else{a.removeClass("asc").removeClass("desc")}}.bind(this))},hasFilterChanged:function(){return this.filtersChanged},persistState:function(){var b="[";this.options.header.each(function(c){b+=c.serialize()+","});var a=b.length;b=b.substr(0,a-1);b+="]";this.cookie.write("header",b)}});var GridSolutionColumn=new Class({Implements:[Events,Options],getOptions:function(){return{label:null,columns:null,width:100,cssClass:null,model:null,filterable:null,filterClass:TextFilter,inputClass:TextInput,editable:false,dataType:"text"}},initialize:function(a){this.setOptions(this.getOptions(),a);this.className="GridSolutionColumn";this.level=0},renderHeader:function(a,e){this.dataGrid=a;this.parentObject=e;var d;if(navigator.appName=="Microsoft Internet Explorer"){d="width : "+parseInt(this.getWidth()-1)+"px;"}else{d="width : "+parseInt(this.getWidth())+"px;"}this.th=new Element("div",{style:d,"class":"th column "+this.options.cssClass});if(this.options.sortable){this.th.setProperty("model",this.options.model);this.th.setStyle("cursor","pointer");this.th.addEvent("click",function(f){this.dataGrid.headerContainer.getChildren(".th").each(function(g){});if(this.dataGrid.sortOn==this.options.model){if(this.dataGrid.sortBy=="ASC"){this.dataGrid.sortBy="DESC"}else{this.dataGrid.sortBy="ASC"}}else{this.dataGrid.sortOn=this.options.model;this.dataGrid.sortBy=this.dataGrid.options.sortBy}this.dataGrid.cookie.write("sort_on",this.dataGrid.sortOn);this.dataGrid.cookie.write("sort_by",this.dataGrid.sortBy);this.dataGrid.loadData()}.bind(this))}var b="";if(this.options.tip){b="tips"}this.th.appendChild(new Element("span",{"class":b,title:this.options.tip,html:this.options.label,style:"width : 1000px; display : block; padding-left : 5px; line-height : "+this.dataGrid.options.headCellHeight+"px;"}));this.parentObject.headerContainer.appendChild(this.th);if(true){this.index=this.dataGrid.columnCount;this.dataGrid.columnCount++;this.dataGrid.columns.include(this);this.level=this.parentObject.level+1;if(this.level>this.dataGrid.levelCount){this.dataGrid.levelCount=this.level}else{if(this.options.filterable&&this.level>(this.dataGrid.levelCount-1)){this.dataGrid.levelCount=this.level+1}}}if(this.options.filterable){var c=null;if(this.options.filterClass){c=new this.options.filterClass()}else{c=new InputFilter()}this.filterTh=new Element("div",{style:d,"class":"th column filter "+this.options.cssClass});this.filterSpan=new Element("span",{style:"width : 1000px; display : block; padding-left : 5px; line-height : "+this.dataGrid.options.headCellHeight+"px;"});c.render(this);this.filterTh.appendChild(this.filterSpan);this.th.appendChild(this.filterTh)}},getWidth:function(){if(this.width>0){return parseInt(this.width)}else{this.width=this.options.width;return parseInt(this.options.width)}},isLastChild:function(){if(this.parentObject.collapsed||this.parentObject.className=="GridSolution"){return true}return(this.parentObject.options.columns.getLast()==this)},createBorder:function(){if(this.dataGrid.dragContainer.getFirst("div.slider_"+parseInt(this.index))){this.dataGrid.dragContainer.getFirst("div.slider_"+this.index).destroy()}var a="width : 5px;";var i;var g;var c=parseInt(this.th.getPosition(this.dataGrid.dragContainer).x+this.th.getWidth()-3);if(this.isLastChild()){if(!this.parentObject.className=="GridSolution"){i=parseInt(this.dataGrid.getGridHeight()-this.parentObject.th.getPosition(this.dataGrid.dragContainer).y-this.dataGrid.options.headCellHeight);g=this.parentObject.th.getPosition(this.dataGrid.dragContainer).y}else{i=parseInt(this.dataGrid.getGridHeight()-this.dataGrid.options.headCellHeight);g=0}}else{i=parseInt(this.dataGrid.getGridHeight()-this.th.getPosition(this.dataGrid.dragContainer).y-this.dataGrid.options.headCellHeight);g=this.th.getPosition(this.dataGrid.dragContainer).y}a+=" height : "+i+"px;";a+=" position : absolute; top : "+g+"px;";a+=" left : "+c+"px;";a+="cursor:col-resize;";var d=new Element("div",{"class":"slider",style:a});d.setProperty("drag_top",g);d.setProperty("column_index",this.index);d.addClass("slider_"+this.index);d.appendChild(new Element("div",{"class":"slider-middle",style:"height : "+d.getStyle("height")}));var h=this;var b=this.dataGrid;var f=c;var e=new Drag(d,{snap:0,onDrag:function(j){j.addClass("dragging");j.setStyle("top",j.getProperty("drag_top")+"px")},onComplete:function(l){l.removeClass("dragging");var k=parseInt(l.getPosition().x-h.th.getPosition().x+3);if(k>5){h.width=k;b.persistState();b.renderHeader();b.dataFlowContainer.getElements("li.cell_"+h.index).each(function(m){m.setStyle("width",k+"px");if(m.cell.column.options.align=="right"){m.cell.displaySpan.setStyle("left",parseInt(m.cell.column.getWidth()-1010)+"px")}m.cell.row.cells.each(function(n){n.displayErrors()})});b.container.getElements("div.cell_"+h.index).each(function(m){m.setStyle("width",k+"px")});b.renderBorder();this.fireEvent("resized")}else{l.setStyle("left",f)}var j=new Tips(".tips")}});this.dataGrid.dragContainer.appendChild(d)},serialize:function(){var b="new GridSolutionColumn({ 'model' : '"+this.options.model+"', 'width' : "+this.getWidth()+", 'align' : '"+this.options.align+"', 'label' : '"+this.options.label+"'";if(this.options.filterable){b+=", 'filterable' : "+this.options.filterable}if(this.options.sortable){b+=", 'sortable' : "+this.options.sortable}if(this.options.actions){b+=", 'actions' : [";this.options.actions.each(function(c){b+=c.serialize()+","});var a=b.length;b=b.substr(0,a-1);b+="]"}b+="})";return b}});var GridSolutionGroup=new Class({Implements:[Events,Options],getOptions:function(){return{label:null,columns:null,cssClass:null,collapsable:false,collapse:false,tip:null}},initialize:function(a){this.setOptions(this.getOptions(),a);this.className="GridSolutionGroup";this.level=0;if(this.options.collapse){this.collapsed=this.options.collapse}},getWidth:function(){width=0;if(!this.collapsed){this.options.columns.each(function(a){width+=parseInt(a.getWidth())})}else{width=this.options.columns[0].getWidth()}return width},renderHeader:function(a,d){this.parentObject=d;this.dataGrid=a;this.level=d.level+1;if(this.level>this.dataGrid.levelCount){this.dataGrid.levelCount=this.level}this.th=new Element("div",{style:"width : "+parseInt(this.getWidth())+"px; position : relative;","class":"th group "+this.options.cssClass}).setProperty("expended_width",this.getWidth()+"px");var b="";if(this.options.tip){b="tips"}this.th.appendChild(new Element("span",{"class":b,title:this.options.tip,html:this.options.label,style:"width : 1000px; display : block; padding-left : 5px; line-height : "+this.dataGrid.options.headCellHeight+"px"}));if(this.options.collapsable){if(this.collapsed){var c=new Element("img",{src:a.options.imagesPath+"/expand.png",style:"display : block; position : absolute; top : 0; right : 0; cursor : pointer"}).addEvent("click",function(f){this.collapsed=false;a.renderHeader();a.hydrate(a.datas)}.bind(this));if(Browser.Engine.trident&&Browser.Engine.version==4){c.setStyle("display","inline").setStyle("float","right");this.th.getFirst().setStyle("display","inline")}this.th.appendChild(c)}else{var e=new Element("img",{src:a.options.imagesPath+"/collapse.png",style:"display : block; position : absolute; top : 0; right : 0; cursor : pointer"}).addEvent("click",function(f){this.collapsed=true;a.renderHeader();a.hydrate(a.datas)}.bind(this));if(Browser.Engine.trident&&Browser.Engine.version==4){e.setStyle("display","inline").setStyle("float","right");this.th.getFirst().setStyle("display","inline")}this.th.appendChild(e)}}this.parentObject.headerContainer.appendChild(this.th);this.headerContainer=this.th;if(!this.collapsed){this.options.columns.each(function(f){f.renderHeader(a,this)}.bind(this))}else{this.options.columns[0].renderHeader(a,this)}},serialize:function(){var b="new GridSolutionGroup({ 'label' : '"+this.options.label+"', 'isResizable' : "+this.options.isResizable+", 'cssClass' : '"+this.options.cssClass+"', 'collapsable' : "+this.options.collapsable+", 'collapsed' : "+this.options.collapsed+", 'tip' : '"+this.options.collapse+"', 'columns' : [";this.options.columns.each(function(d,c){b+=d.serialize()+","}.bind(this));var a=b.length;b=b.substr(0,a-1);b+="]})";return b}});var GridSolutionAction=new Class({Implements:[Events,Options],getOptions:function(){return{title:"",width:20,cssClass:"action",method:null,icon:null,url:null}},initialize:function(a){this.setOptions(this.getOptions(),a);this.className="GridSolutionAction"},render:function(cell){var actionLink=new Element("a",{href:"#",title:this.options.title,"class":"focusable "+this.options.cssClass});actionLink.appendChild(new Element("img",{src:cell.row.dataGrid.options.imagesPath+"/"+this.options.icon}));if(this.options.method){actionLink.addEvent("click",function(e){eval(this.options.method+"(e, this, cell);");e.stop()}.bind(this))}if(this.options.url){actionLink.setProperty("href",this.options.url)}actionLink.addEvent("keydown",function(e){if(e.key=="enter"){if(this.options.method){eval(this.options.method+"(e, this, cell);")}if(this.options.url){window.location.href=this.options.url}e.stop()}if(e.event.shiftKey&&e.key=="tab"){e.stop();cell.row.dataGrid.currentRow.focusPreviousEditableField(cell.index)}else{if(e.key=="tab"){e.stop();cell.row.dataGrid.currentRow.focusNextEditableField(cell.index)}}}.bind(this));return actionLink},serialize:function(){var a="new GridSolutionAction({'title' : '"+this.options.title+"', 'method' : '"+this.options.method+"', 'icon' : '"+this.options.icon+"', 'url' : '"+this.options.method+"'})";return a}});var GridSolutionRow=new Class({Implements:[Events,Options],initialize:function(a){this.setOptions(this.getOptions(),a);this.index=0;this.onClick=this.options.onClick;this.onSavesuccess=this.options.onSavesuccess;this.tip=this.options.tip;this.cells=new Array()},getOptions:function(){return{tip:null,height:20,submitUrl:false,cssClass:"",onExpand:false,onClick:null}},render:function(dataGrid,container){this.container=container;this.dataGrid=dataGrid;this.saveDataUrl=this.dataGrid.options.saveDataUrl;if(!this.ul){this.ul=new Element("ul",{style:"clear : both; height : "+this.getHeight()+"px;"});this.container.appendChild(this.ul)}else{this.ul.empty();this.cells=new Array()}this.ul.addEvent("mouseenter",function(e){this.ul.addClass("selected")}.bind(this));this.ul.addEvent("mouseleave",function(e){this.ul.removeClass("selected")}.bind(this));if(this.tip){this.ul.addClass("tips");this.ul.setProperty("title",row.tip)}if(this.index%2){this.ul.addClass("odd")}if(this.onClick){this.ul.setStyle("cursor","pointer");this.ul.addEvent("click",function(event){eval(this.onClick+"(event, this, this.dataGrid)")}.bind(this))}if(!this.options.cells){this.dataGrid.columns.each(function(column,index){var cell=new GridSolutionCell(null);cell.index=index;this.cells.push(cell);cell.hydrate(this.datas[column.options.model]);cell.render(this,column);cell.row=this}.bind(this))}else{this.dataGrid.columns.each(function(column,index){var rendered=false;this.options.cells.each(function(cell){if(cell.options.model==column.options.model){if(this.datas&&this.datas[column.options.model]){cell.hydrate(this.datas[column.options.model])}cell.index=index;cell.render(this,column);rendered=true;this.cells.push(cell)}}.bind(this));if(!rendered){cell=new GridSolutionCell(null);cell.index=index;cell.render(this,column);this.cells.push(cell)}index++}.bind(this))}},hydrate:function(a){this.datas=a;if(a&&this.datas.click){this.onClick=this.datas.click}},hasChanged:function(){var a=false;this.cells.each(function(b){if(b.hasChanged()){a=true}});if(this.options.cells){this.options.cells.each(function(b){if(b.hasChanged()){a=true}})}return a},save:function(){var dataHash=new Hash();var datas;this.cells.each(function(cell){if(cell.column.options.model){dataHash.include(cell.column.options.model,cell.getData())}});if(this.options.cells){this.options.cells.each(function(cell){if(cell.column.options.model){dataHash.include(cell.column.options.model,cell.getData())}})}if(this.hasChanged()){this.dataGrid.rowContainer.setStyle("opacity","0.5");this.jsonRequest=new Request.JSON({url:this.saveDataUrl,onComplete:function(receivedData){this.dataGrid.destroyTips();this.hydrate(receivedData);this.render(this.dataGrid);this.dataGrid.initDatePicker();this.dataGrid.rowContainer.setStyle("opacity","1");this.dataGrid.getFocusOn();if(this.onSavesuccess){eval(this.onSavesuccess+"(this);")}}.bind(this)}).post(dataHash)}else{this.dataGrid.getFocusOn()}return false},showErrors:function(){this.hideFields()},focusNextEditableField:function(a){if(this.cells[a]&&!this.cells[a].focusNext()){this.cells[a].currentIndex=-1;if(this.cells[a+1]){this.focusNextEditableField(a+1)}else{this.dataGrid.getNextRow();this.dataGrid.currentRow.focusNextEditableField(0);if(this.dataGrid.options.autoSaveRow){this.save()}}}},focusPreviousEditableField:function(a){if(this.cells[a]&&!this.cells[a].focusPrevious()){this.cells[a].currentIndex=-1;if(this.cells[a-1]){this.focusPreviousEditableField(a-1)}else{this.dataGrid.getPreviousRow();if(this.dataGrid.options.autoSaveRow){this.save()}}}},hideFields:function(){this.cells.each(function(a){a.hideInput()})},buildExpandTip:function(url,options){this.dataGrid.destroyTips();this.expandDisplay=new Element("div",{"class":"expand_display"});this.expandDisplay.dataGrid=this.dataGrid;this.expandDisplayView=new Element("div",{"class":"expand_display_view",html:""});this.expandDisplayView.adopt(new Element("img",{alt:"close",src:this.dataGrid.options.imagesPath+"/ajax-loader.gif"}));var closeLink=new Element("a",{style:"float : right; cursor : pointer; margin : -10px 0 0 -15px;"}).adopt(new Element("img",{alt:"close",src:this.dataGrid.options.imagesPath+"/closebox.png"})).addEvent("click",function(element){this.expandDisplay.destroy();if(options.onClose){eval("new options.onClose(this)")}}.bind(this)).addEvent("keydown",function(e){if(e.key=="esc"){this.expandDisplay.destroy();if(options.onClose){eval("new options.onClose(this)")}}}.bind(this));this.expandDisplay.appendChild(closeLink);this.expandDisplay.appendChild(this.expandDisplayView);this.expandDisplay.setStyle("position","absolute");this.expandDisplay.setStyle("top",parseInt(this.getHeight()+this.ul.getPosition(this.dataGrid.gridContainer).y)+"px");this.expandDisplay.setStyle("left",parseInt(this.getHeight()+this.ul.getPosition(this.dataGrid.gridContainer).x)+"px");this.dataGrid.gridContainer.appendChild(this.expandDisplay);var myHTMLRequest=new Request.HTML({url:url,evalScripts:true,update:this.expandDisplayView}).post()},isLast:function(){return this.dataGrid.rows.length==(this.index+1)},focus:function(){this.dataGrid.currentRow=this;this.ul.addClass("selected")},unFocus:function(){this.ul.removeClass("selected")},getHeight:function(){return this.options.height}});var GridSolutionCell=new Class({Implements:[Events,Options],initialize:function(a){this.setOptions(this.getOptions(),a);this.alwaysEdit=this.options.alwaysEdit;this.index=0;this.datas=false;this.currentIndex=-1},getOptions:function(){return{tip:null,editable:false,editOnLoad:true,submitUrl:false,cssClass:"",onExpand:false,onClick:null}},render:function(b,a){this.cssClass=this.options.cssClass;if(this.datas&&this.datas.cssClass){this.cssClass+=" "+this.datas.cssClass}this.column=a;this.row=b;if(!this.options.editable){if(this.datas&&this.datas.editable){this.editable=this.datas.editable}else{this.editable=this.column.options.editable}}else{this.editable=this.options.editable}this.editOnLoad=this.options.editOnLoad;this.li=new Element("li",{"class":"cell_"+this.column.index+" "+this.cssClass,style:"height : "+this.row.getHeight()+"px; line-height : "+this.row.getHeight()+"px; position : relative; overflow : hidden; display : block; float : left; width : "+this.column.getWidth()+"px"});if(this.datas){this.displaySpan=new Element("span",{html:this.datas.value,style:" position : absolute; padding-left : 5px; width : 1000px; height : "+this.row.getHeight()+"px; line-height : "+this.row.getHeight()+"px;"})}else{this.displaySpan=new Element("span",{html:"",style:" position : absolute; padding-left : 5px; width : 1000px; height : "+this.row.getHeight()+"px; line-height : "+this.row.getHeight()+"px"})}if(this.column.options.align=="right"){this.displaySpan.setStyle("left",parseInt(this.column.getWidth()-1010)+"px").setStyle("text-align","right")}this.li.appendChild(this.displaySpan);if(this.column.options.actions){this.actionSpan=new Element("span",{style:"position : absolute; left : 0; line-height :"+parseInt(this.row.getHeight())+"px; height :"+parseInt(this.row.getHeight())+"px;"});this.column.options.actions.each(function(c){this.actionSpan.appendChild(c.render(this))}.bind(this));this.li.appendChild(this.actionSpan)}if(this.datas&&this.datas.actions){if(!this.actionSpan){this.actionSpan=new Element("span",{style:"position : absolute; left : 0;"})}this.datas.actions.each(function(c){this.actionSpan.appendChild(new GridSolutionAction(c).render(this))}.bind(this));this.li.appendChild(this.actionSpan)}if(this.options.actions){if(!this.actionSpan){this.actionSpan=new Element("span",{style:"position : absolute; left : 0;"})}this.options.actions.each(function(c){this.actionSpan.appendChild(c.render(this))}.bind(this));this.li.appendChild(this.actionSpan)}this.li.cell=this;this.row.ul.appendChild(this.li);if(!this.column.options.isAction){this.displayErrors()}if(this.editable){this.buildFormField();this.edit=new Element("a",{style:"position : absolute; display : none; top : 0; right : 5px; z-index : 1000; cursor : pointer;",href:"#",title:"edit"}).addEvent("click",function(c){this.edit.setStyle("display","none");this.showInput(true);return false}.bind(this)).adopt(new Element("img",{src:this.row.dataGrid.options.imagesPath+"/edit.png",style:"display : block;",alt:"edit"}));this.li.addEvent("mouseenter",function(c){if(!this.options.alwaysEdit){this.edit.setStyle("display","block")}}.bind(this)).addEvent("mouseleave",function(c){this.edit.setStyle("display","none")}.bind(this)).adopt(this.edit);if(this.alwaysEdit){this.showInput(false)}}},hydrate:function(a){this.datas=a},buildFormField:function(){this.inputDisplay=new Element("span",{style:" padding-left : 5px; width : 1000px; height : "+this.row.getHeight()+"px; line-height : "+this.row.getHeight()+"px"});this.inputDisplay.setStyle("display","none");this.li.appendChild(this.inputDisplay);this.input=new this.column.options.inputClass();if(this.column.options.inputErrorString){this.input.options.onErrorMessage=this.column.options.inputErrorString}this.input.render(this)},showInput:function(a){this.row.dataGrid.currentRow=this.row;this.displaySpan.setStyle("display","none");this.inputDisplay.setStyle("display","block");if(a){this.input.getFocus()}},hideInput:function(){if(!this.alwaysEdit){if(this.inputDisplay){this.inputDisplay.setStyle("display","none")}if(this.displaySpan){this.displaySpan.setProperty("html",this.input.input.value);this.displaySpan.addClass("changed");this.displaySpan.setStyle("display","block")}}},hasChanged:function(){var a=false;if(this.datas&&this.datas.value!=this.displaySpan.get("html")){a=true}else{if(!this.datas&&this.getData()==""){a=true}}return a},getData:function(){var a="";if(!this.alwaysEdit){a=this.displaySpan.get("html")}if(a==""&&this.input){a=this.input.input.value}return a},displayErrors:function(){if(this.displayError){this.displayError.destroy()}if(this.datas&&this.datas.error&&this.row.dataGrid.currentRow==this.row){this.row.ul.addClass("error");this.showErrors(this.datas.error)}},showErrors:function(a){this.displayError=new Element("div",{"class":"fieldError cell_"+this.column.index});this.displayError.appendChild(new Element("p",{"class":"fieldError",html:a}));this.displayError.setStyle("opacity","0.9").setStyle("position","absolute").setStyle("width",this.column.getWidth()+"px").setStyle("top",parseInt(this.row.ul.getPosition(this.row.dataGrid.container).y)+parseInt(this.row.getHeight())+"px").setStyle("left",parseInt(this.li.getPosition(this.row.dataGrid.container).x+this.row.dataGrid.container.getScroll().x+5)+"px");this.row.dataGrid.container.appendChild(this.displayError)},focusNext:function(){var a=false;this.li.getElements(".focusable").each(function(c,b){if(b>this.currentIndex&&!a){if(!c.hasClass("action")){this.showInput()}c.focus();this.currentIndex=b;this.row.dataGrid.currentCell=this;a=true}}.bind(this));if(!a){this.currentIndex=-1}return a},focusPrevious:function(){var a=false;var b=this.li.getElements(".focusable");b.reverse();b.each(function(d,c){if(c>this.currentIndex&&!a){if(!d.hasClass("action")){this.showInput()}d.focus();this.currentIndex=(b.length()-c);this.row.dataGrid.currentCell=this;a=true}}.bind(this));b.reverse();if(!a){this.currentIndex=-1}return a},getIndex:function(a){var b=null;this.li.getElements(".focusable").each(function(d,c){if(a.uid==d.uid){b=c}});return b}});var GridSolutionCookie=new Class({initialize:function(a,b){this.duration=b;this.dataGrid=a},write:function(a,b){Cookie.write(location.href+"_"+a,b)},read:function(a){return Cookie.read(location.href+"_"+a)}});var TextFilter=new Class({Implements:[Events,Options],initialize:function(a){this.setOptions(this.getOptions(),a)},getOptions:function(){return{cssClass:""}},render:function(b){var a=new Element("input",{"class":"input_filter input_text "+this.options.cssClass});a.setProperty("type","text");a.setProperty("previous_value","");a.setStyle("width",(b.getWidth()-15)+"px");a.setProperty("filter",b.options.model);a.addEvent("click",function(c){return false});a.addEvent("keyup",function(c){if(!(a.getProperty("previous_value")==null&&a.value=="")&&!(a.value==a.getProperty("previous_value"))){this.dataGrid.filtersChanged=true}a.setProperty("previous_value",a.value);if(c.key!="down"&&c.key!="up"&&c.key!="tab"&&c.key!="enter"&&c.key!="esc"){if(this.dataGrid.filtersChanged){this.dataGrid.loadData()}}this.dataGrid.headerContainer.getElements("input.input_filter").each(function(d){if(d.getProperty("filter")==this.options.model){d.focus()}}.bind(this))}.bind(b));b.filterSpan.appendChild(a)}});var DateFilter=new Class({Implements:[Events,Options],Extends:TextFilter,getOptions:function(){return{cssClass:"date_mask",onErrorMessage:"invalid character %key"}},render:function(b){var a=new Element("input",{"class":"input_filter input_text "+this.options.cssClass});a.setProperty("type","text");a.setProperty("previous_value","");a.setStyle("width",(b.getWidth()-15)+"px");a.setProperty("filter",b.options.model);a.addEvent("click",function(c){return false});a.removeEvents("keyup");a.addEvent("keyup",function(c){if(!(a.getProperty("previous_value")==null&&a.value=="")&&!(a.value==a.getProperty("previous_value"))){this.dataGrid.filtersChanged=true}a.setProperty("previous_value",a.value);if(c.key!="down"&&c.key!="up"&&c.key!="tab"&&c.key!="enter"&&c.key!="esc"){if(this.dataGrid.filtersChanged&&(a.value.length==this.dataGrid.options.dateFormat.length||a.value.length==0)){this.dataGrid.loadData();c.stop()}}this.dataGrid.headerContainer.getElements("input.input_filter").each(function(d){if(d.getProperty("filter")==this.options.model){d.focus()}}.bind(this))}.bind(b));b.filterSpan.appendChild(a)}});var TextInput=new Class({Implements:[Options],initialize:function(a){this.setOptions(this.getOptions(),a)},getOptions:function(){return{cssClass:""}},render:function(a){this.focused=false;a.inputObject=this;this.input=new Element("input",{"class":"focusable cell_"+a.column.index+" "+this.options.cssClass});this.input.cell=a;this.input.setProperty("type","text");if(a.datas){this.input.value=a.datas.value}this.input.setStyle("width",(a.column.getWidth()-15)+"px");this.input.addEvent("blur",function(b){a.hideInput()});this.input.addEvent("focus",function(b){a.currentIndex=a.getIndex(this.input)}.bind(this));this.input.addEvent("keydown",function(b){if(b.event.shiftKey&&b.key=="tab"){b.stop();this.row.focusPreviousEditableField(a.index)}else{if(b.key=="tab"){b.stop();this.row.focusNextEditableField(a.index)}if(b.key=="enter"){b.stop();this.hideInput();if(true){a.row.dataGrid.getFocusOn();this.row.save()}}}}.bind(a));a.inputDisplay.appendChild(this.input)},getFocus:function(){this.input.focus();this.focused=true}});var DateInput=new Class({Implements:[Options],Extends:TextInput,getOptions:function(){return{cssClass:"date_mask",onErrorMessage:"invalid character %key"}}});var DateTimeInput=new Class({Implements:[Options],Extends:DateInput,getOptions:function(){return{cssClass:"date_time_mask"}}});var SelectInput=new Class({Implements:[Events,Options],render:function(a){this.focused=false;this.cell=a;this.input=new Element("select",{"class":"focusable select_"+a.column.index});this.choices=this.cell.column.options.selectOptions;if(this.cell.datas){this.value=this.cell.datas.value}this.choices.each(function(c,d){var b=new Element("option");b.setProperty("value",c);b.set("text",c);b.inject(this.input);if(this.value&&this.value==c){b.setProperty("selected","true")}},this);this.attachEvent();a.inputDisplay.appendChild(this.input)},attachEvent:function(){this.input.addEvents({blur:function(a){this.cell.hideInput()}.bind(this),keydown:function(a){if(a.event.shiftKey&&a.key=="tab"){this.selectValue(a);this.cell.row.focusPreviousEditableField(this.cell.index);a.stop()}else{if(a.key=="tab"){this.selectValue(a);this.cell.row.focusNextEditableField(this.cell.index);a.stop()}else{if(a.key=="enter"){a.stop();this.cell.hideInput();this.cell.row.save()}else{if(a.key=="up"||a.key=="down"){a.stop()}}}}}.bind(this)})},selectValue:function(c){var b=c.target.selectedIndex;this.value=this.choices[b];var a=this.input.getChildren();a.each(function(d,e){if(d.get("selected")){d.erase("selected")}if(e==b){d.setProperty("selected","true")}},this)},getFocus:function(){this.input.focus();this.focused=true}});