").appendTo($container),$viewport.css("overflow-y",options.autoHeight?"hidden":"auto"),$canvas=$("
").appendTo($viewport),$focusSink2=$focusSink.clone().appendTo($container),options.explicitInitialization||finishInitialization()}function finishInitialization(){initialized||(initialized=!0,viewportW=parseFloat($.css($container[0],"width",!0)),measureCellPaddingAndBorder(),disableSelection($headers),options.enableTextSelectionOnCells||$viewport.bind("selectstart.ui",function(t){return $(t.target).is("input,textarea")}),updateColumnCaches(),createColumnHeaders(),setupColumnSort(),createCssRules(),resizeCanvas(),bindAncestorScrollEvents(),$container.bind("resize.slickgrid",resizeCanvas),$viewport.bind("click",handleClick).bind("scroll",handleScroll),$headerScroller.bind("contextmenu",handleHeaderContextMenu).bind("click",handleHeaderClick).delegate(".slick-header-column","mouseenter",handleHeaderMouseEnter).delegate(".slick-header-column","mouseleave",handleHeaderMouseLeave),$headerRowScroller.bind("scroll",handleHeaderRowScroll),$focusSink.add($focusSink2).bind("keydown",handleKeyDown),$canvas.bind("keydown",handleKeyDown).bind("click",handleClick).bind("dblclick",handleDblClick).bind("contextmenu",handleContextMenu).bind("draginit",handleDragInit).bind("dragstart",{distance:3},handleDragStart).bind("drag",handleDrag).bind("dragend",handleDragEnd).delegate(".slick-cell","mouseenter",handleMouseEnter).delegate(".slick-cell","mouseleave",handleMouseLeave))}function registerPlugin(t){plugins.unshift(t),t.init(self)}function unregisterPlugin(t){for(var e=plugins.length;e>=0;e--)if(plugins[e]===t){plugins[e].destroy&&plugins[e].destroy(),plugins.splice(e,1);break}}function setSelectionModel(t){selectionModel&&(selectionModel.onSelectedRangesChanged.unsubscribe(handleSelectedRangesChanged),selectionModel.destroy&&selectionModel.destroy()),selectionModel=t,selectionModel&&(selectionModel.init(self),selectionModel.onSelectedRangesChanged.subscribe(handleSelectedRangesChanged))}function getSelectionModel(){return selectionModel}function getCanvasNode(){return $canvas[0]}function measureScrollbar(){var t=$("
").appendTo("body"),e={width:t.width()-t[0].clientWidth,height:t.height()-t[0].clientHeight};return t.remove(),e}function getHeadersWidth(){for(var t=0,e=0,i=columns.length;i>e;e++){var n=columns[e].width;t+=n}return t+=scrollbarDimensions.width,Math.max(t,viewportW)+1e3}function getCanvasWidth(){for(var t=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW,e=0,i=columns.length;i--;)e+=columns[i].width;return options.fullWidthRows?Math.max(e,t):e}function updateCanvasWidth(t){var e=canvasWidth;canvasWidth=getCanvasWidth(),canvasWidth!=e&&($canvas.width(canvasWidth),$headerRow.width(canvasWidth),$headers.width(getHeadersWidth()),viewportHasHScroll=canvasWidth>viewportW-scrollbarDimensions.width),$headerRowSpacer.width(canvasWidth+(viewportHasVScroll?scrollbarDimensions.width:0)),(canvasWidth!=e||t)&&applyColumnWidths()}function disableSelection(t){t&&t.jquery&&t.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return!1})}function getMaxSupportedCssHeight(){for(var t=1e6,e=navigator.userAgent.toLowerCase().match(/firefox/)?6e6:1e9,i=$("
").appendTo(document.body);;){var n=2*t;if(i.css("height",n),n>e||i.height()!==n)break;t=n}return i.remove(),t}function bindAncestorScrollEvents(){for(var t=$canvas[0];(t=t.parentNode)!=document.body&&null!=t;)if(t==$viewport[0]||t.scrollWidth!=t.clientWidth||t.scrollHeight!=t.clientHeight){var e=$(t);$boundAncestors=$boundAncestors?$boundAncestors.add(e):e,e.bind("scroll."+uid,handleActiveCellPositionChange)}}function unbindAncestorScrollEvents(){$boundAncestors&&($boundAncestors.unbind("scroll."+uid),$boundAncestors=null)}function updateColumnHeader(t,e,i){if(initialized){var n=getColumnIndex(t);if(null!=n){var r=columns[n],o=$headers.children().eq(n);o&&(void 0!==e&&(columns[n].name=e),void 0!==i&&(columns[n].toolTip=i),trigger(self.onBeforeHeaderCellDestroy,{node:o[0],column:r}),o.attr("title",i||"").children().eq(0).html(e),trigger(self.onHeaderCellRendered,{node:o[0],column:r}))}}}function getHeaderRow(){return $headerRow[0]}function getHeaderRowColumn(t){var e=getColumnIndex(t),i=$headerRow.children().eq(e);return i&&i[0]}function createColumnHeaders(){function t(){$(this).addClass("ui-state-hover")}function e(){$(this).removeClass("ui-state-hover")}$headers.find(".slick-header-column").each(function(){var t=$(this).data("column");t&&trigger(self.onBeforeHeaderCellDestroy,{node:this,column:t})}),$headers.empty(),$headers.width(getHeadersWidth()),$headerRow.find(".slick-headerrow-column").each(function(){var t=$(this).data("column");t&&trigger(self.onBeforeHeaderRowCellDestroy,{node:this,column:t})}),$headerRow.empty();for(var i=0;columns.length>i;i++){var n=columns[i],r=$("
").html("
"+n.name+" ").width(n.width-headerColumnWidthDiff).attr("id",""+uid+n.id).attr("title",n.toolTip||"").data("column",n).addClass(n.headerCssClass||"").appendTo($headers);if((options.enableColumnReorder||n.sortable)&&r.on("mouseenter",t).on("mouseleave",e),n.sortable&&(r.addClass("slick-header-sortable"),r.append("
")),trigger(self.onHeaderCellRendered,{node:r[0],column:n}),options.showHeaderRow){var o=$("
").data("column",n).appendTo($headerRow);trigger(self.onHeaderRowCellRendered,{node:o[0],column:n})}}setSortColumns(sortColumns),setupColumnResize(),options.enableColumnReorder&&setupColumnReorder()}function setupColumnSort(){$headers.click(function(t){if(t.metaKey=t.metaKey||t.ctrlKey,!$(t.target).hasClass("slick-resizable-handle")){var e=$(t.target).closest(".slick-header-column");if(e.length){var i=e.data("column");if(i.sortable){if(!getEditorLock().commitCurrentEdit())return;for(var n=null,r=0;sortColumns.length>r;r++)if(sortColumns[r].columnId==i.id){n=sortColumns[r],n.sortAsc=!n.sortAsc;break}t.metaKey&&options.multiColumnSort?n&&sortColumns.splice(r,1):((t.shiftKey||t.metaKey)&&options.multiColumnSort||(sortColumns=[]),n?0==sortColumns.length&&sortColumns.push(n):(n={columnId:i.id,sortAsc:i.defaultSortAsc},sortColumns.push(n))),setSortColumns(sortColumns),options.multiColumnSort?trigger(self.onSort,{multiColumnSort:!0,sortCols:$.map(sortColumns,function(t){return{sortCol:columns[getColumnIndex(t.columnId)],sortAsc:t.sortAsc}})},t):trigger(self.onSort,{multiColumnSort:!1,sortCol:i,sortAsc:n.sortAsc},t)}}}})}function setupColumnReorder(){$headers.filter(":ui-sortable").sortable("destroy"),$headers.sortable({containment:"parent",distance:3,axis:"x",cursor:"default",tolerance:"intersection",helper:"clone",placeholder:"slick-sortable-placeholder ui-state-default slick-header-column",forcePlaceholderSize:!0,start:function(t,e){$(e.helper).addClass("slick-header-column-active")},beforeStop:function(t,e){$(e.helper).removeClass("slick-header-column-active")},stop:function(t){if(!getEditorLock().commitCurrentEdit())return void $(this).sortable("cancel");for(var e=$headers.sortable("toArray"),i=[],n=0;e.length>n;n++)i.push(columns[getColumnIndex(e[n].replace(uid,""))]);
+setColumns(i),trigger(self.onColumnsReordered,{}),t.stopPropagation(),setupColumnResize()}})}function setupColumnResize(){var t,e,i,n,r,o,s,a,l;r=$headers.children(),r.find(".slick-resizable-handle").remove(),r.each(function(t){columns[t].resizable&&(void 0===a&&(a=t),l=t)}),void 0!==a&&r.each(function(u,c){a>u||options.forceFitColumns&&u>=l||(t=$(c),$("
").appendTo(c).bind("dragstart",function(t){if(!getEditorLock().commitCurrentEdit())return!1;n=t.pageX,$(this).parent().addClass("slick-header-column-active");var a=null,l=null;if(r.each(function(t,e){columns[t].previousWidth=$(e).outerWidth()}),options.forceFitColumns)for(a=0,l=0,e=u+1;r.length>e;e++)i=columns[e],i.resizable&&(null!==l&&(i.maxWidth?l+=i.maxWidth-i.previousWidth:l=null),a+=i.previousWidth-Math.max(i.minWidth||0,absoluteColumnMinWidth));var c=0,h=0;for(e=0;u>=e;e++)i=columns[e],i.resizable&&(null!==h&&(i.maxWidth?h+=i.maxWidth-i.previousWidth:h=null),c+=i.previousWidth-Math.max(i.minWidth||0,absoluteColumnMinWidth));null===a&&(a=1e5),null===c&&(c=1e5),null===l&&(l=1e5),null===h&&(h=1e5),s=n+Math.min(a,h),o=n-Math.min(c,l)}).bind("drag",function(t){var a,l,c=Math.min(s,Math.max(o,t.pageX))-n;if(0>c){for(l=c,e=u;e>=0;e--)i=columns[e],i.resizable&&(a=Math.max(i.minWidth||0,absoluteColumnMinWidth),l&&a>i.previousWidth+l?(l+=i.previousWidth-a,i.width=a):(i.width=i.previousWidth+l,l=0));if(options.forceFitColumns)for(l=-c,e=u+1;r.length>e;e++)i=columns[e],i.resizable&&(l&&i.maxWidth&&l>i.maxWidth-i.previousWidth?(l-=i.maxWidth-i.previousWidth,i.width=i.maxWidth):(i.width=i.previousWidth+l,l=0))}else{for(l=c,e=u;e>=0;e--)i=columns[e],i.resizable&&(l&&i.maxWidth&&l>i.maxWidth-i.previousWidth?(l-=i.maxWidth-i.previousWidth,i.width=i.maxWidth):(i.width=i.previousWidth+l,l=0));if(options.forceFitColumns)for(l=-c,e=u+1;r.length>e;e++)i=columns[e],i.resizable&&(a=Math.max(i.minWidth||0,absoluteColumnMinWidth),l&&a>i.previousWidth+l?(l+=i.previousWidth-a,i.width=a):(i.width=i.previousWidth+l,l=0))}applyColumnHeaderWidths(),options.syncColumnCellResize&&applyColumnWidths()}).bind("dragend",function(){var t;for($(this).parent().removeClass("slick-header-column-active"),e=0;r.length>e;e++)i=columns[e],t=$(r[e]).outerWidth(),i.previousWidth!==t&&i.rerenderOnResize&&invalidateAllRows();updateCanvasWidth(!0),render(),trigger(self.onColumnsResized,{})}))})}function getVBoxDelta(t){var e=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=0;return $.each(e,function(e,n){i+=parseFloat(t.css(n))||0}),i}function measureCellPaddingAndBorder(){var t,e=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],i=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"];t=$("
-
").appendTo($headers),headerColumnWidthDiff=headerColumnHeightDiff=0,$.each(e,function(e,i){headerColumnWidthDiff+=parseFloat(t.css(i))||0}),$.each(i,function(e,i){headerColumnHeightDiff+=parseFloat(t.css(i))||0}),t.remove();var n=$("
").appendTo($canvas);t=$("
-
").appendTo(n),cellWidthDiff=cellHeightDiff=0,$.each(e,function(e,i){cellWidthDiff+=parseFloat(t.css(i))||0}),$.each(i,function(e,i){cellHeightDiff+=parseFloat(t.css(i))||0}),n.remove(),absoluteColumnMinWidth=Math.max(headerColumnWidthDiff,cellWidthDiff)}function createCssRules(){$style=$("").appendTo($("head"));for(var t=options.rowHeight-cellHeightDiff,e=["."+uid+" .slick-header-column { left: 1000px; }","."+uid+" .slick-top-panel { height:"+options.topPanelHeight+"px; }","."+uid+" .slick-headerrow-columns { height:"+options.headerRowHeight+"px; }","."+uid+" .slick-cell { height:"+t+"px; }","."+uid+" .slick-row { height:"+options.rowHeight+"px; }"],i=0;columns.length>i;i++)e.push("."+uid+" .l"+i+" { }"),e.push("."+uid+" .r"+i+" { }");$style[0].styleSheet?$style[0].styleSheet.cssText=e.join(" "):$style[0].appendChild(document.createTextNode(e.join(" ")))}function getColumnCssRules(t){if(!stylesheet){for(var e=document.styleSheets,i=0;e.length>i;i++)if((e[i].ownerNode||e[i].owningElement)==$style[0]){stylesheet=e[i];break}if(!stylesheet)throw Error("Cannot find stylesheet.");columnCssRulesL=[],columnCssRulesR=[];for(var n,r,o=stylesheet.cssRules||stylesheet.rules,i=0;o.length>i;i++){var s=o[i].selectorText;(n=/\.l\d+/.exec(s))?(r=parseInt(n[0].substr(2,n[0].length-2),10),columnCssRulesL[r]=o[i]):(n=/\.r\d+/.exec(s))&&(r=parseInt(n[0].substr(2,n[0].length-2),10),columnCssRulesR[r]=o[i])}}return{left:columnCssRulesL[t],right:columnCssRulesR[t]}}function removeCssRules(){$style.remove(),stylesheet=null}function destroy(){getEditorLock().cancelCurrentEdit(),trigger(self.onBeforeDestroy,{});for(var t=plugins.length;t--;)unregisterPlugin(plugins[t]);options.enableColumnReorder&&$headers.filter(":ui-sortable").sortable("destroy"),unbindAncestorScrollEvents(),$container.unbind(".slickgrid"),removeCssRules(),$canvas.unbind("draginit dragstart dragend drag"),$container.empty().removeClass(uid)}function trigger(t,e,i){return i=i||new Slick.EventData,e=e||{},e.grid=self,t.notify(e,i,self)}function getEditorLock(){return options.editorLock}function getEditController(){return editController}function getColumnIndex(t){return columnsById[t]}function autosizeColumns(){var t,e,i,n=[],r=0,o=0,s=viewportHasVScroll?viewportW-scrollbarDimensions.width:viewportW;for(t=0;columns.length>t;t++)e=columns[t],n.push(e.width),o+=e.width,e.resizable&&(r+=e.width-Math.max(e.minWidth,absoluteColumnMinWidth));for(i=o;o>s&&r;){var a=(o-s)/r;for(t=0;columns.length>t&&o>s;t++){e=columns[t];var l=n[t];if(!(!e.resizable||e.minWidth>=l||absoluteColumnMinWidth>=l)){var u=Math.max(e.minWidth,absoluteColumnMinWidth),c=Math.floor(a*(l-u))||1;c=Math.min(c,l-u),o-=c,r-=c,n[t]-=c}}if(i==o)break;i=o}for(i=o;s>o;){var h=s/o;for(t=0;columns.length>t&&s>o;t++)if(e=columns[t],e.resizable&&!(e.maxWidth<=e.width)){var d=Math.min(Math.floor(h*e.width)-e.width,e.maxWidth-e.width||1e6)||1;o+=d,n[t]+=d}if(i==o)break;i=o}var f=!1;for(t=0;columns.length>t;t++)columns[t].rerenderOnResize&&columns[t].width!=n[t]&&(f=!0),columns[t].width=n[t];applyColumnHeaderWidths(),updateCanvasWidth(!0),f&&(invalidateAllRows(),render())}function applyColumnHeaderWidths(){if(initialized){for(var t,e=0,i=$headers.children(),n=i.length;n>e;e++)t=$(i[e]),t.width()!==columns[e].width-headerColumnWidthDiff&&t.width(columns[e].width-headerColumnWidthDiff);updateColumnCaches()}}function applyColumnWidths(){for(var t,e,i=0,n=0;columns.length>n;n++)t=columns[n].width,e=getColumnCssRules(n),e.left.style.left=i+"px",e.right.style.right=canvasWidth-i-t+"px",i+=columns[n].width}function setSortColumn(t,e){setSortColumns([{columnId:t,sortAsc:e}])}function setSortColumns(t){sortColumns=t;var e=$headers.children();e.removeClass("slick-header-column-sorted").find(".slick-sort-indicator").removeClass("slick-sort-indicator-asc slick-sort-indicator-desc"),$.each(sortColumns,function(t,i){null==i.sortAsc&&(i.sortAsc=!0);var n=getColumnIndex(i.columnId);null!=n&&e.eq(n).addClass("slick-header-column-sorted").find(".slick-sort-indicator").addClass(i.sortAsc?"slick-sort-indicator-asc":"slick-sort-indicator-desc")})}function getSortColumns(){return sortColumns}function handleSelectedRangesChanged(t,e){selectedRows=[];for(var i={},n=0;e.length>n;n++)for(var r=e[n].fromRow;e[n].toRow>=r;r++){i[r]||(selectedRows.push(r),i[r]={});for(var o=e[n].fromCell;e[n].toCell>=o;o++)canCellBeSelected(r,o)&&(i[r][columns[o].id]=options.selectedCellCssClass)}setCellCssStyles(options.selectedCellCssClass,i),trigger(self.onSelectedRowsChanged,{rows:getSelectedRows()},t)}function getColumns(){return columns}function updateColumnCaches(){columnPosLeft=[],columnPosRight=[];for(var t=0,e=0,i=columns.length;i>e;e++)columnPosLeft[e]=t,columnPosRight[e]=t+columns[e].width,t+=columns[e].width}function setColumns(t){columns=t,columnsById={};for(var e=0;columns.length>e;e++){var i=columns[e]=$.extend({},columnDefaults,columns[e]);columnsById[i.id]=e,i.minWidth&&i.width
i.maxWidth&&(i.width=i.maxWidth)}updateColumnCaches(),initialized&&(invalidateAllRows(),createColumnHeaders(),removeCssRules(),createCssRules(),resizeCanvas(),applyColumnWidths(),handleScroll())}function getOptions(){return options}function setOptions(t){getEditorLock().commitCurrentEdit()&&(makeActiveCellNormal(),options.enableAddRow!==t.enableAddRow&&invalidateRow(getDataLength()),options=$.extend(options,t),validateAndEnforceOptions(),$viewport.css("overflow-y",options.autoHeight?"hidden":"auto"),render())}function validateAndEnforceOptions(){options.autoHeight&&(options.leaveSpaceForNewRows=!1)}function setData(t,e){data=t,invalidateAllRows(),updateRowCount(),e&&scrollTo(0)}function getData(){return data}function getDataLength(){return data.getLength?data.getLength():data.length}function getDataLengthIncludingAddNew(){return getDataLength()+(options.enableAddRow?1:0)}function getDataItem(t){return data.getItem?data.getItem(t):data[t]}function getTopPanel(){return $topPanel[0]}function setTopPanelVisibility(t){options.showTopPanel!=t&&(options.showTopPanel=t,t?$topPanelScroller.slideDown("fast",resizeCanvas):$topPanelScroller.slideUp("fast",resizeCanvas))}function setHeaderRowVisibility(t){options.showHeaderRow!=t&&(options.showHeaderRow=t,t?$headerRowScroller.slideDown("fast",resizeCanvas):$headerRowScroller.slideUp("fast",resizeCanvas))}function getContainerNode(){return $container.get(0)}function getRowTop(t){return options.rowHeight*t-offset}function getRowFromPosition(t){return Math.floor((t+offset)/options.rowHeight)}function scrollTo(t){t=Math.max(t,0),t=Math.min(t,th-viewportH+(viewportHasHScroll?scrollbarDimensions.height:0));var e=offset;page=Math.min(n-1,Math.floor(t/ph)),offset=Math.round(page*cj);var i=t-offset;if(offset!=e){var r=getVisibleRange(i);cleanupRows(r),updateRowPositions()}prevScrollTop!=i&&(vScrollDir=i+offset>prevScrollTop+e?1:-1,$viewport[0].scrollTop=lastRenderedScrollTop=scrollTop=prevScrollTop=i,trigger(self.onViewportChanged,{}))}function defaultFormatter(t,e,i){return null==i?"":(i+"").replace(/&/g,"&").replace(//g,">")}function getFormatter(t,e){var i=data.getItemMetadata&&data.getItemMetadata(t),n=i&&i.columns&&(i.columns[e.id]||i.columns[getColumnIndex(e.id)]);return n&&n.formatter||i&&i.formatter||e.formatter||options.formatterFactory&&options.formatterFactory.getFormatter(e)||options.defaultFormatter}function getEditor(t,e){var i=columns[e],n=data.getItemMetadata&&data.getItemMetadata(t),r=n&&n.columns;return r&&r[i.id]&&void 0!==r[i.id].editor?r[i.id].editor:r&&r[e]&&void 0!==r[e].editor?r[e].editor:i.editor||options.editorFactory&&options.editorFactory.getEditor(i)}function getDataItemValueForColumn(t,e){return options.dataItemColumnValueExtractor?options.dataItemColumnValueExtractor(t,e):t[e.field]}function appendRowHtml(t,e,i,n){var r=getDataItem(e),o=n>e&&!r,s="slick-row"+(o?" loading":"")+(e===activeRow?" active":"")+(1==e%2?" odd":" even"),a=data.getItemMetadata&&data.getItemMetadata(e);a&&a.cssClasses&&(s+=" "+a.cssClasses),t.push("");for(var l,u,c=0,h=columns.length;h>c;c++){if(u=columns[c],l=1,a&&a.columns){var d=a.columns[u.id]||a.columns[c];l=d&&d.colspan||1,"*"===l&&(l=h-c)}if(columnPosRight[Math.min(h-1,c+l-1)]>i.leftPx){if(columnPosLeft[c]>i.rightPx)break;appendCellHtml(t,e,c,l,r)}l>1&&(c+=l-1)}t.push("
")}function appendCellHtml(t,e,i,n,r){var o=columns[i],s="slick-cell l"+i+" r"+Math.min(columns.length-1,i+n-1)+(o.cssClass?" "+o.cssClass:"");e===activeRow&&i===activeCell&&(s+=" active");for(var a in cellCssClasses)cellCssClasses[a][e]&&cellCssClasses[a][e][o.id]&&(s+=" "+cellCssClasses[a][e][o.id]);if(t.push(""),r){var l=getDataItemValueForColumn(r,o);t.push(getFormatter(e,o)(e,i,l,o,r))}t.push("
"),rowsCache[e].cellRenderQueue.push(i),rowsCache[e].cellColSpans[i]=n}function cleanupRows(t){for(var e in rowsCache)(e=parseInt(e,10))!==activeRow&&(t.top>e||e>t.bottom)&&removeRowFromCache(e)}function invalidate(){updateRowCount(),invalidateAllRows(),render()}function invalidateAllRows(){currentEditor&&makeActiveCellNormal();for(var t in rowsCache)removeRowFromCache(t)}function removeRowFromCache(t){var e=rowsCache[t];e&&($canvas[0].removeChild(e.rowNode),delete rowsCache[t],delete postProcessedRows[t],renderedRows--,counter_rows_removed++)}function invalidateRows(t){var e,i;if(t&&t.length)for(vScrollDir=0,e=0,i=t.length;i>e;e++)currentEditor&&activeRow===t[e]&&makeActiveCellNormal(),rowsCache[t[e]]&&removeRowFromCache(t[e])}function invalidateRow(t){invalidateRows([t])}function updateCell(t,e){var i=getCellNode(t,e);if(i){var n=columns[e],r=getDataItem(t);currentEditor&&activeRow===t&&activeCell===e?currentEditor.loadValue(r):(i.innerHTML=r?getFormatter(t,n)(t,e,getDataItemValueForColumn(r,n),n,r):"",invalidatePostProcessingResults(t))}}function updateRow(t){var e=rowsCache[t];if(e){ensureCellNodesInRowsCache(t);var i=getDataItem(t);for(var n in e.cellNodesByColumnIdx)if(e.cellNodesByColumnIdx.hasOwnProperty(n)){n=0|n;var r=columns[n],o=e.cellNodesByColumnIdx[n];t===activeRow&&n===activeCell&¤tEditor?currentEditor.loadValue(i):o.innerHTML=i?getFormatter(t,r)(t,n,getDataItemValueForColumn(i,r),r,i):""}invalidatePostProcessingResults(t)}}function getViewportHeight(){return parseFloat($.css($container[0],"height",!0))-parseFloat($.css($container[0],"paddingTop",!0))-parseFloat($.css($container[0],"paddingBottom",!0))-parseFloat($.css($headerScroller[0],"height"))-getVBoxDelta($headerScroller)-(options.showTopPanel?options.topPanelHeight+getVBoxDelta($topPanelScroller):0)-(options.showHeaderRow?options.headerRowHeight+getVBoxDelta($headerRowScroller):0)}function resizeCanvas(){initialized&&(viewportH=options.autoHeight?options.rowHeight*getDataLengthIncludingAddNew():getViewportHeight(),numVisibleRows=Math.ceil(viewportH/options.rowHeight),viewportW=parseFloat($.css($container[0],"width",!0)),options.autoHeight||$viewport.height(viewportH),options.forceFitColumns&&autosizeColumns(),updateRowCount(),handleScroll(),lastRenderedScrollLeft=-1,render())}function updateRowCount(){if(getDataLength(),initialized){numberOfRows=getDataLengthIncludingAddNew()+(options.leaveSpaceForNewRows?numVisibleRows-1:0);var t=viewportHasVScroll;viewportHasVScroll=!options.autoHeight&&numberOfRows*options.rowHeight>viewportH;var e=getDataLengthIncludingAddNew()-1;for(var i in rowsCache)i>=e&&removeRowFromCache(i);activeCellNode&&activeRow>e&&resetActiveCell();var r=h;th=Math.max(options.rowHeight*numberOfRows,viewportH-scrollbarDimensions.height),maxSupportedCssHeight>th?(h=ph=th,n=1,cj=0):(h=maxSupportedCssHeight,ph=h/100,n=Math.floor(th/ph),cj=(th-h)/(n-1)),h!==r&&($canvas.css("height",h),scrollTop=$viewport[0].scrollTop);var o=th-viewportH>=scrollTop+offset;0==th||0==scrollTop?page=offset=0:scrollTo(o?scrollTop+offset:th-viewportH),h!=r&&options.autoHeight&&resizeCanvas(),options.forceFitColumns&&t!=viewportHasVScroll&&autosizeColumns(),updateCanvasWidth(!1)}}function getVisibleRange(t,e){return null==t&&(t=scrollTop),null==e&&(e=scrollLeft),{top:getRowFromPosition(t),bottom:getRowFromPosition(t+viewportH)+1,leftPx:e,rightPx:e+viewportW}}function getRenderedRange(t,e){var i=getVisibleRange(t,e),n=Math.round(viewportH/options.rowHeight),r=3;return-1==vScrollDir?(i.top-=n,i.bottom+=r):1==vScrollDir?(i.top-=r,i.bottom+=n):(i.top-=r,i.bottom+=r),i.top=Math.max(0,i.top),i.bottom=Math.min(getDataLengthIncludingAddNew()-1,i.bottom),i.leftPx-=viewportW,i.rightPx+=viewportW,i.leftPx=Math.max(0,i.leftPx),i.rightPx=Math.min(canvasWidth,i.rightPx),i}function ensureCellNodesInRowsCache(t){var e=rowsCache[t];if(e&&e.cellRenderQueue.length)for(var i=e.rowNode.lastChild;e.cellRenderQueue.length;){var n=e.cellRenderQueue.pop();e.cellNodesByColumnIdx[n]=i,i=i.previousSibling}}function cleanUpCells(t,e){var i=0,n=rowsCache[e],r=[];for(var o in n.cellNodesByColumnIdx)if(n.cellNodesByColumnIdx.hasOwnProperty(o)){o=0|o;var s=n.cellColSpans[o];(columnPosLeft[o]>t.rightPx||columnPosRight[Math.min(columns.length-1,o+s-1)]=a;a++)if(e=rowsCache[a]){ensureCellNodesInRowsCache(a),cleanUpCells(t,a),i=0;var u=data.getItemMetadata&&data.getItemMetadata(a);u=u&&u.columns;for(var c=getDataItem(a),h=0,d=columns.length;d>h&&!(columnPosLeft[h]>t.rightPx);h++)if(null==(n=e.cellColSpans[h])){if(n=1,u){var f=u[columns[h].id]||u[h];n=f&&f.colspan||1,"*"===n&&(n=d-h)}columnPosRight[Math.min(d-1,h+n-1)]>t.leftPx&&(appendCellHtml(r,a,h,n,c),i++),h+=n>1?n-1:0}else h+=n>1?n-1:0;i&&(s+=i,o.push(a))}if(r.length){var p=document.createElement("div");p.innerHTML=r.join("");for(var g,m;null!=(g=o.pop());){e=rowsCache[g];for(var v;null!=(v=e.cellRenderQueue.pop());)m=p.lastChild,e.rowNode.appendChild(m),e.cellNodesByColumnIdx[v]=m}}}function renderRows(t){for(var e=$canvas[0],i=[],n=[],r=!1,o=getDataLength(),s=t.top,a=t.bottom;a>=s;s++)rowsCache[s]||(renderedRows++,n.push(s),rowsCache[s]={rowNode:null,cellColSpans:[],cellNodesByColumnIdx:[],cellRenderQueue:[]},appendRowHtml(i,s,t,o),activeCellNode&&activeRow===s&&(r=!0),counter_rows_rendered++);if(n.length){var l=document.createElement("div");l.innerHTML=i.join("");for(var s=0,a=n.length;a>s;s++)rowsCache[n[s]].rowNode=e.appendChild(l.firstChild);r&&(activeCellNode=getCellNode(activeRow,activeCell))}}function startPostProcessing(){options.enableAsyncPostRender&&(clearTimeout(h_postrender),h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}function invalidatePostProcessingResults(t){delete postProcessedRows[t],postProcessFromRow=Math.min(postProcessFromRow,t),postProcessToRow=Math.max(postProcessToRow,t),startPostProcessing()}function updateRowPositions(){for(var t in rowsCache)rowsCache[t].rowNode.style.top=getRowTop(t)+"px"}function render(){if(initialized){var t=getVisibleRange(),e=getRenderedRange();cleanupRows(e),lastRenderedScrollLeft!=scrollLeft&&cleanUpAndRenderCells(e),renderRows(e),postProcessFromRow=t.top,postProcessToRow=Math.min(getDataLengthIncludingAddNew()-1,t.bottom),startPostProcessing(),lastRenderedScrollTop=scrollTop,lastRenderedScrollLeft=scrollLeft,h_render=null}}function handleHeaderRowScroll(){var t=$headerRowScroller[0].scrollLeft;t!=$viewport[0].scrollLeft&&($viewport[0].scrollLeft=t)}function handleScroll(){scrollTop=$viewport[0].scrollTop,scrollLeft=$viewport[0].scrollLeft;var t=Math.abs(scrollTop-prevScrollTop),e=Math.abs(scrollLeft-prevScrollLeft);if(e&&(prevScrollLeft=scrollLeft,$headerScroller[0].scrollLeft=scrollLeft,$topPanelScroller[0].scrollLeft=scrollLeft,$headerRowScroller[0].scrollLeft=scrollLeft),t)if(vScrollDir=scrollTop>prevScrollTop?1:-1,prevScrollTop=scrollTop,viewportH>t)scrollTo(scrollTop+offset);else{var i=offset;page=h==viewportH?0:Math.min(n-1,Math.floor(scrollTop*((th-viewportH)/(h-viewportH))*(1/ph))),offset=Math.round(page*cj),i!=offset&&invalidateAllRows()}(e||t)&&(h_render&&clearTimeout(h_render),(Math.abs(lastRenderedScrollTop-scrollTop)>20||Math.abs(lastRenderedScrollLeft-scrollLeft)>20)&&(options.forceSyncScrolling||viewportH>Math.abs(lastRenderedScrollTop-scrollTop)&&viewportW>Math.abs(lastRenderedScrollLeft-scrollLeft)?render():h_render=setTimeout(render,50),trigger(self.onViewportChanged,{}))),trigger(self.onScroll,{scrollLeft:scrollLeft,scrollTop:scrollTop})}function asyncPostProcessRows(){for(;postProcessToRow>=postProcessFromRow;){var t=vScrollDir>=0?postProcessFromRow++:postProcessToRow--,e=rowsCache[t];if(e&&!(t>=getDataLength())){postProcessedRows[t]||(postProcessedRows[t]={}),ensureCellNodesInRowsCache(t);for(var i in e.cellNodesByColumnIdx)if(e.cellNodesByColumnIdx.hasOwnProperty(i)){i=0|i;var n=columns[i];if(n.asyncPostRender&&!postProcessedRows[t][i]){var r=e.cellNodesByColumnIdx[i];r&&n.asyncPostRender(r,t,getDataItem(t),n),postProcessedRows[t][i]=!0}}return void(h_postrender=setTimeout(asyncPostProcessRows,options.asyncPostRenderDelay))}}}function updateCellCssStylesOnRenderedRows(t,e){var i,n,r,o;for(var s in rowsCache){if(o=e&&e[s],r=t&&t[s],o)for(n in o)r&&o[n]==r[n]||(i=getCellNode(s,getColumnIndex(n)),i&&$(i).removeClass(o[n]));if(r)for(n in r)o&&o[n]==r[n]||(i=getCellNode(s,getColumnIndex(n)),i&&$(i).addClass(r[n]))}}function addCellCssStyles(t,e){if(cellCssClasses[t])throw"addCellCssStyles: cell CSS hash with key '"+t+"' already exists.";cellCssClasses[t]=e,updateCellCssStylesOnRenderedRows(e,null),trigger(self.onCellCssStylesChanged,{key:t,hash:e})}function removeCellCssStyles(t){cellCssClasses[t]&&(updateCellCssStylesOnRenderedRows(null,cellCssClasses[t]),delete cellCssClasses[t],trigger(self.onCellCssStylesChanged,{key:t,hash:null}))}function setCellCssStyles(t,e){var i=cellCssClasses[t];cellCssClasses[t]=e,updateCellCssStylesOnRenderedRows(e,i),trigger(self.onCellCssStylesChanged,{key:t,hash:e})}function getCellCssStyles(t){return cellCssClasses[t]}function flashCell(t,e,i){function n(t){t&&setTimeout(function(){r.queue(function(){r.toggleClass(options.cellFlashingCssClass).dequeue(),n(t-1)})},i)}if(i=i||100,rowsCache[t]){var r=$(getCellNode(t,e));n(4)}}function handleDragInit(t,e){var i=getCellFromEvent(t);if(!i||!cellExists(i.row,i.cell))return!1;var n=trigger(self.onDragInit,e,t);return!!t.isImmediatePropagationStopped()&&n}function handleDragStart(t,e){var i=getCellFromEvent(t);if(!i||!cellExists(i.row,i.cell))return!1;var n=trigger(self.onDragStart,e,t);return!!t.isImmediatePropagationStopped()&&n}function handleDrag(t,e){return trigger(self.onDrag,e,t)}function handleDragEnd(t,e){trigger(self.onDragEnd,e,t)}function handleKeyDown(t){trigger(self.onKeyDown,{row:activeRow,cell:activeCell},t);var e=t.isImmediatePropagationStopped();if(!e)if(t.shiftKey||t.altKey||t.ctrlKey)9!=t.which||!t.shiftKey||t.ctrlKey||t.altKey||(e=navigatePrev());else if(27==t.which){if(!getEditorLock().isActive())return;cancelEditAndSetFocus()}else 34==t.which?(navigatePageDown(),e=!0):33==t.which?(navigatePageUp(),e=!0):37==t.which?e=navigateLeft():39==t.which?e=navigateRight():38==t.which?e=navigateUp():40==t.which?e=navigateDown():9==t.which?e=navigateNext():13==t.which&&(options.editable&&(currentEditor?activeRow===getDataLength()?navigateDown():commitEditAndSetFocus():getEditorLock().commitCurrentEdit()&&makeActiveCellEditable()),e=!0);if(e){t.stopPropagation(),t.preventDefault();try{t.originalEvent.keyCode=0}catch(i){}}}function handleClick(t){currentEditor||(t.target!=document.activeElement||$(t.target).hasClass("slick-cell"))&&setFocus();var e=getCellFromEvent(t);!e||null!==currentEditor&&activeRow==e.row&&activeCell==e.cell||(trigger(self.onClick,{row:e.row,cell:e.cell},t),t.isImmediatePropagationStopped()||activeCell==e.cell&&activeRow==e.row||!canCellBeActive(e.row,e.cell)||(!getEditorLock().isActive()||getEditorLock().commitCurrentEdit())&&(scrollRowIntoView(e.row,!1),setActiveCellInternal(getCellNode(e.row,e.cell))))}function handleContextMenu(t){var e=$(t.target).closest(".slick-cell",$canvas);0!==e.length&&(activeCellNode!==e[0]||null===currentEditor)&&trigger(self.onContextMenu,{},t)}function handleDblClick(t){var e=getCellFromEvent(t);!e||null!==currentEditor&&activeRow==e.row&&activeCell==e.cell||(trigger(self.onDblClick,{row:e.row,cell:e.cell},t),t.isImmediatePropagationStopped()||options.editable&&gotoCell(e.row,e.cell,!0))}function handleHeaderMouseEnter(t){trigger(self.onHeaderMouseEnter,{column:$(this).data("column")},t)}function handleHeaderMouseLeave(t){trigger(self.onHeaderMouseLeave,{column:$(this).data("column")},t)}function handleHeaderContextMenu(t){var e=$(t.target).closest(".slick-header-column",".slick-header-columns"),i=e&&e.data("column");trigger(self.onHeaderContextMenu,{column:i},t)}function handleHeaderClick(t){var e=$(t.target).closest(".slick-header-column",".slick-header-columns"),i=e&&e.data("column");i&&trigger(self.onHeaderClick,{column:i},t)}function handleMouseEnter(t){trigger(self.onMouseEnter,{},t)}function handleMouseLeave(t){trigger(self.onMouseLeave,{},t)}function cellExists(t,e){return!(0>t||t>=getDataLength()||0>e||e>=columns.length)}function getCellFromPoint(t,e){for(var i=getRowFromPosition(e),n=0,r=0,o=0;columns.length>o&&t>r;o++)r+=columns[o].width,n++;return 0>n&&(n=0),{row:i,cell:n-1}}function getCellFromNode(t){var e=/l\d+/.exec(t.className);if(!e)throw"getCellFromNode: cannot get cell - "+t.className;return parseInt(e[0].substr(1,e[0].length-1),10)}function getRowFromNode(t){for(var e in rowsCache)if(rowsCache[e].rowNode===t)return 0|e;return null}function getCellFromEvent(t){var e=$(t.target).closest(".slick-cell",$canvas);if(!e.length)return null;var i=getRowFromNode(e[0].parentNode),n=getCellFromNode(e[0]);return null==i||null==n?null:{row:i,cell:n}}function getCellNodeBox(t,e){if(!cellExists(t,e))return null;for(var i=getRowTop(t),n=i+options.rowHeight-1,r=0,o=0;e>o;o++)r+=columns[o].width;var s=r+columns[e].width;return{top:i,left:r,bottom:n,right:s}}function resetActiveCell(){setActiveCellInternal(null,!1)}function setFocus(){-1==tabbingDirection?$focusSink[0].focus():$focusSink2[0].focus()}function scrollCellIntoView(t,e,i){scrollRowIntoView(t,i);var n=getColspan(t,e),r=columnPosLeft[e],o=columnPosRight[e+(n>1?n-1:0)],s=scrollLeft+viewportW;scrollLeft>r?($viewport.scrollLeft(r),handleScroll(),render()):o>s&&($viewport.scrollLeft(Math.min(r,o-$viewport[0].clientWidth)),handleScroll(),render())}function setActiveCellInternal(t,e){null!==activeCellNode&&(makeActiveCellNormal(),$(activeCellNode).removeClass("active"),rowsCache[activeRow]&&$(rowsCache[activeRow].rowNode).removeClass("active"));var i=activeCellNode!==t;activeCellNode=t,null!=activeCellNode?(activeRow=getRowFromNode(activeCellNode.parentNode),activeCell=activePosX=getCellFromNode(activeCellNode),null==e&&(e=activeRow==getDataLength()||options.autoEdit),$(activeCellNode).addClass("active"),$(rowsCache[activeRow].rowNode).addClass("active"),options.editable&&e&&isCellPotentiallyEditable(activeRow,activeCell)&&(clearTimeout(h_editorLoader),options.asyncEditorLoading?h_editorLoader=setTimeout(function(){makeActiveCellEditable()},options.asyncEditorLoadDelay):makeActiveCellEditable())):activeRow=activeCell=null,i&&trigger(self.onActiveCellChanged,getActiveCell())}function clearTextSelection(){if(document.selection&&document.selection.empty)try{document.selection.empty()}catch(t){}else if(window.getSelection){var e=window.getSelection();e&&e.removeAllRanges&&e.removeAllRanges()}}function isCellPotentiallyEditable(t,e){return!(getDataLength()>t&&!getDataItem(t))&&(!(columns[e].cannotTriggerInsert&&t>=getDataLength())&&!!getEditor(t,e))}function makeActiveCellNormal(){if(currentEditor){if(trigger(self.onBeforeCellEditorDestroy,{editor:currentEditor}),currentEditor.destroy(),currentEditor=null,activeCellNode){var t=getDataItem(activeRow);if($(activeCellNode).removeClass("editable invalid"),t){var e=columns[activeCell],i=getFormatter(activeRow,e);activeCellNode.innerHTML=i(activeRow,activeCell,getDataItemValueForColumn(t,e),e,t),invalidatePostProcessingResults(activeRow)}}navigator.userAgent.toLowerCase().match(/msie/)&&clearTextSelection(),getEditorLock().deactivate(editController)}}function makeActiveCellEditable(t){if(activeCellNode){if(!options.editable)throw"Grid : makeActiveCellEditable : should never get called when options.editable is false";if(clearTimeout(h_editorLoader),isCellPotentiallyEditable(activeRow,activeCell)){var e=columns[activeCell],i=getDataItem(activeRow);if(trigger(self.onBeforeEditCell,{row:activeRow,cell:activeCell,item:i,column:e})===!1)return void setFocus();getEditorLock().activate(editController),$(activeCellNode).addClass("editable"),t||(activeCellNode.innerHTML=""),currentEditor=new(t||getEditor(activeRow,activeCell))({grid:self,gridPosition:absBox($container[0]),position:absBox(activeCellNode),container:activeCellNode,column:e,item:i||{},commitChanges:commitEditAndSetFocus,cancelChanges:cancelEditAndSetFocus}),i&¤tEditor.loadValue(i),serializedEditorValue=currentEditor.serializeValue(),currentEditor.position&&handleActiveCellPositionChange()}}}function commitEditAndSetFocus(){getEditorLock().commitCurrentEdit()&&(setFocus(),options.autoEdit&&navigateDown())}function cancelEditAndSetFocus(){getEditorLock().cancelCurrentEdit()&&setFocus()}function absBox(t){var e={top:t.offsetTop,left:t.offsetLeft,bottom:0,right:0,width:$(t).outerWidth(),height:$(t).outerHeight(),visible:!0};e.bottom=e.top+e.height,e.right=e.left+e.width;for(var i=t.offsetParent;(t=t.parentNode)!=document.body;)e.visible&&t.scrollHeight!=t.offsetHeight&&"visible"!=$(t).css("overflowY")&&(e.visible=e.bottom>t.scrollTop&&e.topt.scrollLeft&&e.leftscrollTop+viewportH+offset?(scrollTo(e?i:n),render()):scrollTop+offset>t*options.rowHeight&&(scrollTo(e?n:i),render())}function scrollRowToTop(t){scrollTo(t*options.rowHeight),render()}function scrollPage(t){var e=t*numVisibleRows;if(scrollTo((getRowFromPosition(scrollTop)+e)*options.rowHeight),render(),options.enableCellNavigation&&null!=activeRow){var i=activeRow+e;i>=getDataLengthIncludingAddNew()&&(i=getDataLengthIncludingAddNew()-1),0>i&&(i=0);for(var n=0,r=null,o=activePosX;activePosX>=n;)canCellBeActive(i,n)&&(r=n),n+=getColspan(i,n);null!==r?(setActiveCellInternal(getCellNode(i,r)),activePosX=o):resetActiveCell()}}function navigatePageDown(){scrollPage(1)}function navigatePageUp(){scrollPage(-1)}function getColspan(t,e){var i=data.getItemMetadata&&data.getItemMetadata(t);if(!i||!i.columns)return 1;var n=i.columns[columns[e].id]||i.columns[e],r=n&&n.colspan;return r="*"===r?columns.length-e:r||1}function findFirstFocusableCell(t){for(var e=0;columns.length>e;){if(canCellBeActive(t,e))return e;e+=getColspan(t,e)}return null}function findLastFocusableCell(t){for(var e=0,i=null;columns.length>e;)canCellBeActive(t,e)&&(i=e),e+=getColspan(t,e);return i}function gotoRight(t,e){if(e>=columns.length)return null;do e+=getColspan(t,e);while(columns.length>e&&!canCellBeActive(t,e));return columns.length>e?{row:t,cell:e,posX:e}:null}function gotoLeft(t,e){if(0>=e)return null;var i=findFirstFocusableCell(t);if(null===i||i>=e)return null;for(var n,r={row:t,cell:i,posX:i};;){if(n=gotoRight(r.row,r.cell,r.posX),!n)return null;if(n.cell>=e)return r;r=n}}function gotoDown(t,e,i){for(var n;;){if(++t>=getDataLengthIncludingAddNew())return null;for(n=e=0;i>=e;)n=e,e+=getColspan(t,e);if(canCellBeActive(t,n))return{row:t,cell:n,posX:i}}}function gotoUp(t,e,i){for(var n;;){if(0>--t)return null;
+for(n=e=0;i>=e;)n=e,e+=getColspan(t,e);if(canCellBeActive(t,n))return{row:t,cell:n,posX:i}}}function gotoNext(t,e,i){if(null==t&&null==e&&(t=e=i=0,canCellBeActive(t,e)))return{row:t,cell:e,posX:e};var n=gotoRight(t,e,i);if(n)return n;for(var r=null;++t--t)return null;e=0,r=findLastFocusableCell(t),null!==r&&(n={row:t,cell:r,posX:r})}return n}function navigateRight(){return navigate("right")}function navigateLeft(){return navigate("left")}function navigateDown(){return navigate("down")}function navigateUp(){return navigate("up")}function navigateNext(){return navigate("next")}function navigatePrev(){return navigate("prev")}function navigate(t){if(!options.enableCellNavigation)return!1;if(!activeCellNode&&"prev"!=t&&"next"!=t)return!1;if(!getEditorLock().commitCurrentEdit())return!0;setFocus();var e={up:-1,down:1,left:-1,right:1,prev:-1,next:1};tabbingDirection=e[t];var i={up:gotoUp,down:gotoDown,left:gotoLeft,right:gotoRight,prev:gotoPrev,next:gotoNext},n=i[t],r=n(activeRow,activeCell,activePosX);if(r){var o=r.row==getDataLength();return scrollCellIntoView(r.row,r.cell,!o),setActiveCellInternal(getCellNode(r.row,r.cell)),activePosX=r.posX,!0}return setActiveCellInternal(getCellNode(activeRow,activeCell)),!1}function getCellNode(t,e){return rowsCache[t]?(ensureCellNodesInRowsCache(t),rowsCache[t].cellNodesByColumnIdx[e]):null}function setActiveCell(t,e){initialized&&(t>getDataLength()||0>t||e>=columns.length||0>e||options.enableCellNavigation&&(scrollCellIntoView(t,e,!1),setActiveCellInternal(getCellNode(t,e),!1)))}function canCellBeActive(t,e){if(!options.enableCellNavigation||t>=getDataLengthIncludingAddNew()||0>t||e>=columns.length||0>e)return!1;var i=data.getItemMetadata&&data.getItemMetadata(t);if(i&&"boolean"==typeof i.focusable)return i.focusable;var n=i&&i.columns;return n&&n[columns[e].id]&&"boolean"==typeof n[columns[e].id].focusable?n[columns[e].id].focusable:n&&n[e]&&"boolean"==typeof n[e].focusable?n[e].focusable:columns[e].focusable}function canCellBeSelected(t,e){if(t>=getDataLength()||0>t||e>=columns.length||0>e)return!1;var i=data.getItemMetadata&&data.getItemMetadata(t);if(i&&"boolean"==typeof i.selectable)return i.selectable;var n=i&&i.columns&&(i.columns[columns[e].id]||i.columns[e]);return n&&"boolean"==typeof n.selectable?n.selectable:columns[e].selectable}function gotoCell(t,e,i){if(initialized&&canCellBeActive(t,e)&&getEditorLock().commitCurrentEdit()){scrollCellIntoView(t,e,!1);var n=getCellNode(t,e);setActiveCellInternal(n,i||t===getDataLength()||options.autoEdit),currentEditor||setFocus()}}function commitCurrentEdit(){var t=getDataItem(activeRow),e=columns[activeCell];if(currentEditor){if(currentEditor.isValueChanged()){var i=currentEditor.validate();if(i.valid){if(getDataLength()>activeRow){var n={row:activeRow,cell:activeCell,editor:currentEditor,serializedValue:currentEditor.serializeValue(),prevSerializedValue:serializedEditorValue,execute:function(){this.editor.applyValue(t,this.serializedValue),updateRow(this.row)},undo:function(){this.editor.applyValue(t,this.prevSerializedValue),updateRow(this.row)}};options.editCommandHandler?(makeActiveCellNormal(),options.editCommandHandler(t,e,n)):(n.execute(),makeActiveCellNormal()),trigger(self.onCellChange,{row:activeRow,cell:activeCell,item:t})}else{var r={};currentEditor.applyValue(r,currentEditor.serializeValue()),makeActiveCellNormal(),trigger(self.onAddNewRow,{item:r,column:e})}return!getEditorLock().isActive()}return $(activeCellNode).removeClass("invalid"),$(activeCellNode).width(),$(activeCellNode).addClass("invalid"),trigger(self.onValidationError,{editor:currentEditor,cellNode:activeCellNode,validationResults:i,row:activeRow,cell:activeCell,column:e}),currentEditor.focus(),!1}makeActiveCellNormal()}return!0}function cancelCurrentEdit(){return makeActiveCellNormal(),!0}function rowsToRanges(t){for(var e=[],i=columns.length-1,n=0;t.length>n;n++)e.push(new Slick.Range(t[n],0,t[n],i));return e}function getSelectedRows(){if(!selectionModel)throw"Selection model is not set";return selectedRows}function setSelectedRows(t){if(!selectionModel)throw"Selection model is not set";selectionModel.setSelectedRanges(rowsToRanges(t))}var defaults={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:50,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:"flashing",selectedCellCssClass:"selected",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,fullWidthRows:!1,multiColumnSort:!1,defaultFormatter:defaultFormatter,forceSyncScrolling:!1},columnDefaults={name:"",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null,defaultSortAsc:!0,focusable:!0,selectable:!0},th,h,ph,n,cj,page=0,offset=0,vScrollDir=1,initialized=!1,$container,uid="slickgrid_"+Math.round(1e6*Math.random()),self=this,$focusSink,$focusSink2,$headerScroller,$headers,$headerRow,$headerRowScroller,$headerRowSpacer,$topPanelScroller,$topPanel,$viewport,$canvas,$style,$boundAncestors,stylesheet,columnCssRulesL,columnCssRulesR,viewportH,viewportW,canvasWidth,viewportHasHScroll,viewportHasVScroll,headerColumnWidthDiff=0,headerColumnHeightDiff=0,cellWidthDiff=0,cellHeightDiff=0,absoluteColumnMinWidth,numberOfRows=0,tabbingDirection=1,activePosX,activeRow,activeCell,activeCellNode=null,currentEditor=null,serializedEditorValue,editController,rowsCache={},renderedRows=0,numVisibleRows,prevScrollTop=0,scrollTop=0,lastRenderedScrollTop=0,lastRenderedScrollLeft=0,prevScrollLeft=0,scrollLeft=0,selectionModel,selectedRows=[],plugins=[],cellCssClasses={},columnsById={},sortColumns=[],columnPosLeft=[],columnPosRight=[],h_editorLoader=null,h_render=null,h_postrender=null,postProcessedRows={},postProcessToRow=null,postProcessFromRow=null,counter_rows_rendered=0,counter_rows_removed=0;this.debug=function(){var t="";t+="\ncounter_rows_rendered: "+counter_rows_rendered,t+="\ncounter_rows_removed: "+counter_rows_removed,t+="\nrenderedRows: "+renderedRows,t+="\nnumVisibleRows: "+numVisibleRows,t+="\nmaxSupportedCssHeight: "+maxSupportedCssHeight,t+="\nn(umber of pages): "+n,t+="\n(current) page: "+page,t+="\npage height (ph): "+ph,t+="\nvScrollDir: "+vScrollDir,alert(t)},this.eval=function(expr){return eval(expr)},$.extend(this,{slickGridVersion:"2.1",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderMouseEnter:new Slick.Event,onHeaderMouseLeave:new Slick.Event,onHeaderContextMenu:new Slick.Event,onHeaderClick:new Slick.Event,onHeaderCellRendered:new Slick.Event,onBeforeHeaderCellDestroy:new Slick.Event,onHeaderRowCellRendered:new Slick.Event,onBeforeHeaderRowCellDestroy:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:registerPlugin,unregisterPlugin:unregisterPlugin,getColumns:getColumns,setColumns:setColumns,getColumnIndex:getColumnIndex,updateColumnHeader:updateColumnHeader,setSortColumn:setSortColumn,setSortColumns:setSortColumns,getSortColumns:getSortColumns,autosizeColumns:autosizeColumns,getOptions:getOptions,setOptions:setOptions,getData:getData,getDataLength:getDataLength,getDataItem:getDataItem,setData:setData,getSelectionModel:getSelectionModel,setSelectionModel:setSelectionModel,getSelectedRows:getSelectedRows,setSelectedRows:setSelectedRows,getContainerNode:getContainerNode,render:render,invalidate:invalidate,invalidateRow:invalidateRow,invalidateRows:invalidateRows,invalidateAllRows:invalidateAllRows,updateCell:updateCell,updateRow:updateRow,getViewport:getVisibleRange,getRenderedRange:getRenderedRange,resizeCanvas:resizeCanvas,updateRowCount:updateRowCount,scrollRowIntoView:scrollRowIntoView,scrollRowToTop:scrollRowToTop,scrollCellIntoView:scrollCellIntoView,getCanvasNode:getCanvasNode,focus:setFocus,getCellFromPoint:getCellFromPoint,getCellFromEvent:getCellFromEvent,getActiveCell:getActiveCell,setActiveCell:setActiveCell,getActiveCellNode:getActiveCellNode,getActiveCellPosition:getActiveCellPosition,resetActiveCell:resetActiveCell,editActiveCell:makeActiveCellEditable,getCellEditor:getCellEditor,getCellNode:getCellNode,getCellNodeBox:getCellNodeBox,canCellBeSelected:canCellBeSelected,canCellBeActive:canCellBeActive,navigatePrev:navigatePrev,navigateNext:navigateNext,navigateUp:navigateUp,navigateDown:navigateDown,navigateLeft:navigateLeft,navigateRight:navigateRight,navigatePageUp:navigatePageUp,navigatePageDown:navigatePageDown,gotoCell:gotoCell,getTopPanel:getTopPanel,setTopPanelVisibility:setTopPanelVisibility,setHeaderRowVisibility:setHeaderRowVisibility,getHeaderRow:getHeaderRow,getHeaderRowColumn:getHeaderRowColumn,getGridPosition:getGridPosition,flashCell:flashCell,addCellCssStyles:addCellCssStyles,setCellCssStyles:setCellCssStyles,removeCellCssStyles:removeCellCssStyles,getCellCssStyles:getCellCssStyles,init:finishInitialization,destroy:destroy,getEditorLock:getEditorLock,getEditController:getEditController}),init()}$.extend(!0,window,{Slick:{Grid:SlickGrid}});var scrollbarDimensions,maxSupportedCssHeight}(jQuery),function(t){function e(t,e,i){return null==i||""===i?"-":50>i?""+i+"% ":""+i+"% "}function i(t,e,i){if(null==i||""===i)return"";var n;return n=30>i?"red":70>i?"silver":"green"," "}function n(t,e,i){return i?"Yes":"No"}function r(t,e,i){return i?" ":""}t.extend(!0,window,{Slick:{Formatters:{PercentComplete:e,PercentCompleteBar:i,YesNo:n,Checkmark:r}}})}(jQuery),function(t){function e(e){var i,n;this.init=function(){i=t(" ").appendTo(e.container).bind("keydown.nav",function(e){(e.keyCode===t.ui.keyCode.LEFT||e.keyCode===t.ui.keyCode.RIGHT)&&e.stopImmediatePropagation()}).focus().select()},this.destroy=function(){i.remove()},this.focus=function(){i.focus()},this.getValue=function(){return i.val()},this.setValue=function(t){i.val(t)},this.loadValue=function(t){n=t[e.column.field]||"",i.val(n),i[0].defaultValue=n,i.select()},this.serializeValue=function(){return i.val()},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return!(""==i.val()&&null==n)&&i.val()!=n},this.validate=function(){if(e.column.validator){var t=e.column.validator(i.val());if(!t.valid)return t}return{valid:!0,msg:null}},this.init()}function i(e){var i,n;this.init=function(){i=t(" "),i.bind("keydown.nav",function(e){(e.keyCode===t.ui.keyCode.LEFT||e.keyCode===t.ui.keyCode.RIGHT)&&e.stopImmediatePropagation()}),i.appendTo(e.container),i.focus().select()},this.destroy=function(){i.remove()},this.focus=function(){i.focus()},this.loadValue=function(t){n=t[e.column.field],i.val(n),i[0].defaultValue=n,i.select()},this.serializeValue=function(){return parseInt(i.val(),10)||0},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return!(""==i.val()&&null==n)&&i.val()!=n},this.validate=function(){return isNaN(i.val())?{valid:!1,msg:"Please enter a valid integer"}:{valid:!0,msg:null}},this.init()}function n(e){var i,n,r=!1;this.init=function(){i=t(" "),i.appendTo(e.container),i.focus().select(),i.datepicker({showOn:"button",buttonImageOnly:!0,buttonImage:"../images/calendar.gif",beforeShow:function(){r=!0},onClose:function(){r=!1}}),i.width(i.width()-18)},this.destroy=function(){t.datepicker.dpDiv.stop(!0,!0),i.datepicker("hide"),i.datepicker("destroy"),i.remove()},this.show=function(){r&&t.datepicker.dpDiv.stop(!0,!0).show()},this.hide=function(){r&&t.datepicker.dpDiv.stop(!0,!0).hide()},this.position=function(e){r&&t.datepicker.dpDiv.css("top",e.top+30).css("left",e.left)},this.focus=function(){i.focus()},this.loadValue=function(t){n=t[e.column.field],i.val(n),i[0].defaultValue=n,i.select()},this.serializeValue=function(){return i.val()},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return!(""==i.val()&&null==n)&&i.val()!=n},this.validate=function(){return{valid:!0,msg:null}},this.init()}function r(e){var i,n;this.init=function(){i=t("Yes No "),i.appendTo(e.container),i.focus()},this.destroy=function(){i.remove()},this.focus=function(){i.focus()},this.loadValue=function(t){i.val((n=t[e.column.field])?"yes":"no"),i.select()},this.serializeValue=function(){return"yes"==i.val()},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return i.val()!=n},this.validate=function(){return{valid:!0,msg:null}},this.init()}function o(e){var i,n;this.init=function(){i=t(" "),i.appendTo(e.container),i.focus()},this.destroy=function(){i.remove()},this.focus=function(){i.focus()},this.loadValue=function(t){n=!!t[e.column.field],n?i.prop("checked",!0):i.prop("checked",!1)},this.serializeValue=function(){return i.prop("checked")},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return this.serializeValue()!==n},this.validate=function(){return{valid:!0,msg:null}},this.init()}function s(e){var i,n,r;this.init=function(){i=t(" "),i.width(t(e.container).innerWidth()-25),i.appendTo(e.container),n=t("
").appendTo(e.container),n.append(""),n.find(".editor-percentcomplete-buttons").append("Not started In Progress Complete "),i.focus().select(),n.find(".editor-percentcomplete-slider").slider({orientation:"vertical",range:"min",value:r,slide:function(t,e){i.val(e.value)}}),n.find(".editor-percentcomplete-buttons button").bind("click",function(){i.val(t(this).attr("val")),n.find(".editor-percentcomplete-slider").slider("value",t(this).attr("val"))})},this.destroy=function(){i.remove(),n.remove()},this.focus=function(){i.focus()},this.loadValue=function(t){i.val(r=t[e.column.field]),i.select()},this.serializeValue=function(){return parseInt(i.val(),10)||0},this.applyValue=function(t,i){t[e.column.field]=i},this.isValueChanged=function(){return!(""==i.val()&&null==r)&&(parseInt(i.val(),10)||0)!=r},this.validate=function(){return isNaN(parseInt(i.val(),10))?{valid:!1,msg:"Please enter a valid positive number"}:{valid:!0,msg:null}},this.init()}function a(e){var i,n,r,o=this;this.init=function(){var r=t("body");n=t("
").appendTo(r),i=t(" ')},morpheus.Util.splitOnNewLine=function(text,commentChar){var commentCharCode=void 0!==commentChar?commentChar.charCodeAt(0):void 0,lines=text.split(/\n/);if(1===lines.length){var tmp=text.split(/\r/);tmp.length>1&&(lines=tmp)}for(var rows=[],i=0,nlines=lines.length;i