!function(n,t,i){function e(n,i){var u=t(n);u.data(o,this);this._container=u;this.data=[];this.fields=[];this._editingRow=null;this._sortField=null;this._sortOrder=r;this._firstDisplayingPage=1;this._init(i);this.render()}var o="JSGrid",f="JSGridItem",s="JSGridEditRow",r="asc",v="desc",y="{first}",p="{pages}",w="{prev}",b="{next}",k="{last}",d="{pageIndex}",g="{pageCount}",nt="{itemCount}",tt="javascript:void(0);",u=function(n,i){return t.isFunction(n)?n.apply(i,t.makeArray(arguments).slice(2)):n},it=function(n){var i=t.Deferred();return n&&n.then?n.then(function(){i.resolve.apply(i,arguments)},function(){i.reject.apply(i,arguments)}):i.resolve(n),i.promise()},h={loadData:t.noop,insertItem:t.noop,updateItem:t.noop,deleteItem:t.noop};e.prototype={width:"auto",height:"auto",updateOnResize:!0,rowClass:t.noop,rowRenderer:null,rowClick:function(n){this.editing&&this.editItem(t(n.event.target).closest("tr"))},rowDoubleClick:t.noop,noDataContent:"Not found",noDataRowClass:"jsgrid-nodata-row",heading:!0,headerRowRenderer:null,headerRowClass:"jsgrid-header-row",headerCellClass:"jsgrid-header-cell",filtering:!1,filterRowRenderer:null,filterRowClass:"jsgrid-filter-row",inserting:!1,insertRowRenderer:null,insertRowClass:"jsgrid-insert-row",editing:!1,editRowRenderer:null,editRowClass:"jsgrid-edit-row",confirmDeleting:!0,deleteConfirm:"Are you sure?",selecting:!0,selectedRowClass:"jsgrid-selected-row",oddRowClass:"jsgrid-row",evenRowClass:"jsgrid-alt-row",cellClass:"jsgrid-cell",sorting:!1,sortableClass:"jsgrid-header-sortable",sortAscClass:"jsgrid-header-sort jsgrid-header-sort-asc",sortDescClass:"jsgrid-header-sort jsgrid-header-sort-desc",paging:!1,pagerContainer:null,pageIndex:1,pageSize:20,pageButtonCount:15,pagerFormat:"Pages: {first} {prev} {pages} {next} {last}    {pageIndex} of {pageCount}",pagePrevText:"Prev",pageNextText:"Next",pageFirstText:"First",pageLastText:"Last",pageNavigatorNextText:"...",pageNavigatorPrevText:"...",pagerContainerClass:"jsgrid-pager-container",pagerClass:"jsgrid-pager",pagerNavButtonClass:"jsgrid-pager-nav-button",pagerNavButtonInactiveClass:"jsgrid-pager-nav-inactive-button",pageClass:"jsgrid-pager-page",currentPageClass:"jsgrid-pager-current-page",customLoading:!1,pageLoading:!1,autoload:!1,controller:h,loadIndication:!0,loadIndicationDelay:500,loadMessage:"Please, wait...",loadShading:!0,invalidMessage:"Invalid data entered!",invalidNotify:function(i){var r=t.map(i.errors,function(n){return n.message||null});n.alert([this.invalidMessage].concat(r).join("\n"))},onInit:t.noop,onRefreshing:t.noop,onRefreshed:t.noop,onPageChanged:t.noop,onItemDeleting:t.noop,onItemDeleted:t.noop,onItemInserting:t.noop,onItemInserted:t.noop,onItemEditing:t.noop,onItemUpdating:t.noop,onItemUpdated:t.noop,onItemInvalid:t.noop,onDataLoading:t.noop,onDataLoaded:t.noop,onOptionChanging:t.noop,onOptionChanged:t.noop,onError:t.noop,invalidClass:"jsgrid-invalid",containerClass:"jsgrid",tableClass:"jsgrid-table",gridHeaderClass:"jsgrid-grid-header",gridBodyClass:"jsgrid-grid-body",_init:function(n){t.extend(this,n);this._initLoadStrategy();this._initController();this._initFields();this._attachWindowLoadResize();this._attachWindowResizeCallback();this._callEventHandler(this.onInit)},loadStrategy:function(){return this.pageLoading?new jsGrid.loadStrategies.PageLoadingStrategy(this):new jsGrid.loadStrategies.DirectLoadingStrategy(this)},_initLoadStrategy:function(){this._loadStrategy=u(this.loadStrategy,this)},_initController:function(){this._controller=t.extend({},h,u(this.controller,this))},renderTemplate:function(n,t,r){args=[];for(var f in r)args.push(r[f]);return args.unshift(n,t),n=u.apply(null,args),n===i||null===n?"":n},loadIndicator:function(n){return new jsGrid.LoadIndicator(n)},validation:function(n){return jsGrid.Validation&&new jsGrid.Validation(n)},_initFields:function(){var n=this;n.fields=t.map(n.fields,function(i){if(t.isPlainObject(i)){var r=i.type&&jsGrid.fields[i.type]||jsGrid.Field;i=new r(i)}return i._grid=n,i})},_attachWindowLoadResize:function(){t(n).on("load",t.proxy(this._refreshSize,this))},_attachWindowResizeCallback:function(){this.updateOnResize&&t(n).on("resize",t.proxy(this._refreshSize,this))},_detachWindowResizeCallback:function(){t(n).off("resize",this._refreshSize)},option:function(n,t){var i,r;return 1===arguments.length?this[n]:(i={option:n,oldValue:this[n],newValue:t},this._callEventHandler(this.onOptionChanging,i),this._handleOptionChange(i.option,i.newValue),r={option:i.option,value:i.newValue},void this._callEventHandler(this.onOptionChanged,r))},fieldOption:function(n,t,i){return n=this._normalizeField(n),2===arguments.length?n[t]:(n[t]=i,void this._renderGrid())},_handleOptionChange:function(n,t){switch(this[n]=t,n){case"width":case"height":this._refreshSize();break;case"rowClass":case"rowRenderer":case"rowClick":case"rowDoubleClick":case"noDataRowClass":case"noDataContent":case"selecting":case"selectedRowClass":case"oddRowClass":case"evenRowClass":this._refreshContent();break;case"pageButtonCount":case"pagerFormat":case"pagePrevText":case"pageNextText":case"pageFirstText":case"pageLastText":case"pageNavigatorNextText":case"pageNavigatorPrevText":case"pagerClass":case"pagerNavButtonClass":case"pageClass":case"currentPageClass":case"pagerRenderer":this._refreshPager();break;case"fields":this._initFields();this.render();break;case"data":case"editing":case"heading":case"filtering":case"inserting":case"paging":this.refresh();break;case"loadStrategy":case"pageLoading":this._initLoadStrategy();this.search();break;case"pageIndex":this.openPage(t);break;case"pageSize":this.refresh();this.search();break;case"editRowRenderer":case"editRowClass":this.cancelEdit();break;case"updateOnResize":this._detachWindowResizeCallback();this._attachWindowResizeCallback();break;case"invalidNotify":case"invalidMessage":break;default:this.render()}},destroy:function(){this._detachWindowResizeCallback();this._clear();this._container.removeData(o)},render:function(){return this._renderGrid(),this.autoload?this.loadData():t.Deferred().resolve().promise()},_renderGrid:function(){this._clear();this._container.addClass(this.containerClass).css("position","relative").append(this._createHeader()).append(this._createBody());this._pagerContainer=this._createPagerContainer();this._loadIndicator=this._createLoadIndicator();this._validation=this._createValidation();this.refresh()},_createLoadIndicator:function(){return u(this.loadIndicator,this,{message:this.loadMessage,shading:this.loadShading,container:this._container})},_createValidation:function(){return u(this.validation,this)},_clear:function(){this.cancelEdit();clearTimeout(this._loadingTimer);this._pagerContainer&&this._pagerContainer.empty();this._container.empty().css({position:"",width:"",height:""})},_createHeader:function(){var n=this._headerRow=this._createHeaderRow(),i=this._filterRow=this._createFilterRow(),r=this._insertRow=this._createInsertRow(),u=this._headerGrid=t("").addClass(this.tableClass).append(n).append(i).append(r);return this._header=t("
").addClass(this.gridHeaderClass).addClass(this._scrollBarWidth()?"jsgrid-header-scrollbar":"").append(u)},_createBody:function(){var n=this._content=t("
"),i=this._bodyGrid=t("
").addClass(this.tableClass).append(n);return this._body=t("
").addClass(this.gridBodyClass).append(i).on("scroll",t.proxy(function(n){this._header.scrollLeft(n.target.scrollLeft)},this))},_createPagerContainer:function(){var n=this.pagerContainer||t("
").appendTo(this._container);return t(n).addClass(this.pagerContainerClass)},_eachField:function(n){var i=this;t.each(this.fields,function(t,r){r.visible&&n.call(i,r,t)})},_createHeaderRow:function(){if(t.isFunction(this.headerRowRenderer))return t(this.renderTemplate(this.headerRowRenderer,this));var n=t("
").addClass(this.headerRowClass);return this._eachField(function(i,r){var u=this._prepareCell("").addClass(this.filterRowClass);return this._eachField(function(t){this._prepareCell("").addClass(this.insertRowClass);return this._eachField(function(t){this._prepareCell("").addClass(this.noDataRowClass).append(t(""),this._renderCells(r,n)),r.addClass(this._getRowClasses(n,i)).data(f,n).on("click",t.proxy(function(t){this.rowClick({item:n,itemIndex:i,event:t})},this)).on("dblclick",t.proxy(function(t){this.rowDoubleClick({item:n,itemIndex:i,event:t})},this)),this.selecting&&this._attachRowHover(r),r},_getRowClasses:function(n,t){var i=[];return i.push((t+1)%2?this.oddRowClass:this.evenRowClass),i.push(u(this.rowClass,this,n,t)),i.join(" ")},_attachRowHover:function(n){var i=this.selectedRowClass;n.hover(function(){t(this).addClass(i)},function(){t(this).removeClass(i)})},_renderCells:function(n,t){return this._eachField(function(i){n.append(this._createCell(t,i))}),this},_createCell:function(n,i){var r,u=this._getItemFieldValue(n,i),f={value:u,item:n};return r=t.isFunction(i.cellRenderer)?this.renderTemplate(i.cellRenderer,i,f):t("").addClass(this.editRowClass);return this._eachField(function(t){var r=this._getItemFieldValue(n,t);this._prepareCell("
",i,"headercss",this.headerCellClass).append(this.renderTemplate(i.headerTemplate,i)).appendTo(n);this.sorting&&i.sorting&&u.addClass(this.sortableClass).on("click",t.proxy(function(){this.sort(r)},this))}),n},_prepareCell:function(n,i,r,u){return t(n).css("width",i.width).addClass(u||this.cellClass).addClass(r&&i[r]||i.css).addClass(i.align?"jsgrid-align-"+i.align:"")},_createFilterRow:function(){if(t.isFunction(this.filterRowRenderer))return t(this.renderTemplate(this.filterRowRenderer,this));var n=t("
",t,"filtercss").append(this.renderTemplate(t.filterTemplate,t)).appendTo(n)}),n},_createInsertRow:function(){if(t.isFunction(this.insertRowRenderer))return t(this.renderTemplate(this.insertRowRenderer,this));var n=t("
",t,"insertcss").append(this.renderTemplate(t.insertTemplate,t)).appendTo(n)}),n},_callEventHandler:function(n,i){return n.call(this,t.extend(i,{grid:this})),i},reset:function(){return this._resetSorting(),this._resetPager(),this._loadStrategy.reset()},_resetPager:function(){this._firstDisplayingPage=1;this._setPage(1)},_resetSorting:function(){this._sortField=null;this._sortOrder=r;this._clearSortingCss()},refresh:function(){this._callEventHandler(this.onRefreshing);this.cancelEdit();this._refreshHeading();this._refreshFiltering();this._refreshInserting();this._refreshContent();this._refreshPager();this._refreshSize();this._callEventHandler(this.onRefreshed)},_refreshHeading:function(){this._headerRow.toggle(this.heading)},_refreshFiltering:function(){this._filterRow.toggle(this.filtering)},_refreshInserting:function(){this._insertRow.toggle(this.inserting)},_refreshContent:function(){var t=this._content,i;if(t.empty(),!this.data.length)return t.append(this._createNoDataRow()),this;for(var r=this._loadStrategy.firstDisplayIndex(),u=this._loadStrategy.lastDisplayIndex(),n=r;u>n;n++)i=this.data[n],t.append(this._createRow(i,n))},_createNoDataRow:function(){var n=0;return this._eachField(function(){n++}),t("
").addClass(this.cellClass).attr("colspan",n).append(this.renderTemplate(this.noDataContent,this)))},_createRow:function(n,i){var r;return t.isFunction(this.rowRenderer)?r=this.renderTemplate(this.rowRenderer,this,{item:n,itemIndex:i}):(r=t("
").append(this.renderTemplate(i.itemTemplate||u,i,f)),this._prepareCell(r,i)},_getItemFieldValue:function(n,t){for(var r=t.name.split("."),i=n[r.shift()];i&&r.length;)i=i[r.shift()];return i},_setItemFieldValue:function(n,t,i){for(var r=t.name.split("."),f=n,u=r[0];f&&r.length;)n=f,u=r.shift(),f=n[u];if(!f)for(;r.length;)n=n[u]={},u=r.shift();n[u]=i},sort:function(n,i){return t.isPlainObject(n)&&(i=n.order,n=n.field),this._clearSortingCss(),this._setSortingParams(n,i),this._setSortingCss(),this._loadStrategy.sort()},_clearSortingCss:function(){this._headerRow.find("th").removeClass(this.sortAscClass).removeClass(this.sortDescClass)},_setSortingParams:function(n,t){n=this._normalizeField(n);t=t||(this._sortField===n?this._reversedSortOrder(this._sortOrder):r);this._sortField=n;this._sortOrder=t},_normalizeField:function(n){return t.isNumeric(n)?this.fields[n]:"string"==typeof n?t.grep(this.fields,function(t){return t.name===n})[0]:n},_reversedSortOrder:function(n){return n===r?v:r},_setSortingCss:function(){var n=this._visibleFieldIndex(this._sortField);this._headerRow.find("th").eq(n).addClass(this._sortOrder===r?this.sortAscClass:this.sortDescClass)},_visibleFieldIndex:function(n){return t.inArray(n,t.grep(this.fields,function(n){return n.visible}))},_sortData:function(){var t=this._sortFactor(),n=this._sortField;n&&this.data.sort(function(i,r){return t*n.sortingFunc(i[n.name],r[n.name])})},_sortFactor:function(){return this._sortOrder===r?1:-1},_itemsCount:function(){return this._loadStrategy.itemsCount()},_pagesCount:function(){var n=this._itemsCount(),t=this.pageSize;return Math.floor(n/t)+(n%t?1:0)},_refreshPager:function(){var n=this._pagerContainer,t;n.empty();this.paging&&n.append(this._createPager());t=this.paging&&this._pagesCount()>1;n.toggle(t)},_createPager:function(){var n;return n=t.isFunction(this.pagerRenderer)?t(this.pagerRenderer({pageIndex:this.pageIndex,pageCount:this._pagesCount()})):t("
").append(this._createPagerByFormat()),n.addClass(this.pagerClass),n},_createPagerByFormat:function(){var n=this.pageIndex,i=this._pagesCount(),r=this._itemsCount(),u=this.pagerFormat.split(" ");return t.map(u,t.proxy(function(u){var f=u;return u===p?f=this._createPages():u===y?f=this._createPagerNavButton(this.pageFirstText,1,n>1):u===w?f=this._createPagerNavButton(this.pagePrevText,n-1,n>1):u===b?f=this._createPagerNavButton(this.pageNextText,n+1,i>n):u===k?f=this._createPagerNavButton(this.pageLastText,i,i>n):u===d?f=n:u===g?f=i:u===nt&&(f=r),t.isArray(f)?f.concat([" "]):[f," "]},this))},_createPages:function(){var u=this._pagesCount(),f=this.pageButtonCount,i=this._firstDisplayingPage,t=[],r,n;for(i>1&&t.push(this._createPagerPageNavButton(this.pageNavigatorPrevText,this.showPrevPages)),r=0,n=i;f>r&&u>=n;r++,n++)t.push(n===this.pageIndex?this._createPagerCurrentPage():this._createPagerPage(n));return u>i+f-1&&t.push(this._createPagerPageNavButton(this.pageNavigatorNextText,this.showNextPages)),t},_createPagerNavButton:function(n,i,r){return this._createPagerButton(n,this.pagerNavButtonClass+(r?"":" "+this.pagerNavButtonInactiveClass),r?function(){this.openPage(i)}:t.noop)},_createPagerPageNavButton:function(n,t){return this._createPagerButton(n,this.pagerNavButtonClass,t)},_createPagerPage:function(n){return this._createPagerButton(n,this.pageClass,function(){this.openPage(n)})},_createPagerButton:function(n,i,r){var u=t("").attr("href",tt).html(n).on("click",t.proxy(r,this));return t("").addClass(i).append(u)},_createPagerCurrentPage:function(){return t("").addClass(this.pageClass).addClass(this.currentPageClass).text(this.pageIndex)},_refreshSize:function(){this._refreshHeight();this._refreshWidth()},_refreshWidth:function(){var n="auto"===this.width?this._getAutoWidth():this.width;this._container.width(n)},_getAutoWidth:function(){var n=this._headerGrid,t=this._header,i,r;return n.width("auto"),i=n.outerWidth(),r=t.outerWidth()-t.innerWidth(),n.width(""),i+r},_scrollBarWidth:function(){var n;return function(){var r,u,f,e;return n===i&&(r=t("
<\/div>"),u=t("
<\/div>"),r.append(u).appendTo("body"),f=u.innerWidth(),r.css("overflow-y","auto"),e=u.innerWidth(),r.remove(),n=f-e),n}}(),_refreshHeight:function(){var t,i=this._container,r=this._pagerContainer,n=this.height;i.height(n);"auto"!==n&&(n=i.height(),t=this._header.outerHeight(!0),r.parents(i).length&&(t+=r.outerHeight(!0)),this._body.outerHeight(n-t))},showPrevPages:function(){var n=this._firstDisplayingPage,t=this.pageButtonCount;this._firstDisplayingPage=n>t?n-t:1;this._refreshPager()},showNextPages:function(){var t=this._firstDisplayingPage,n=this.pageButtonCount,i=this._pagesCount();this._firstDisplayingPage=t+2*n>i?i-n+1:t+n;this._refreshPager()},openPage:function(n){1>n||n>this._pagesCount()||(this._setPage(n),this._loadStrategy.openPage(n))},_setPage:function(n){var t=this._firstDisplayingPage,i=this.pageButtonCount;this.pageIndex=n;t>n&&(this._firstDisplayingPage=n);n>t+i-1&&(this._firstDisplayingPage=n-i+1);this._callEventHandler(this.onPageChanged,{pageIndex:n})},_controllerCall:function(n,i,r,u){if(r)return t.Deferred().reject().promise();this._showLoading();var f=this._controller;if(!f||!f[n])throw Error("controller has no method '"+n+"'");return it(f[n](i)).done(t.proxy(u,this)).fail(t.proxy(this._errorHandler,this)).always(t.proxy(this._hideLoading,this))},_errorHandler:function(){this._callEventHandler(this.onError,{args:t.makeArray(arguments)})},_showLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadingTimer=setTimeout(t.proxy(function(){this._loadIndicator.show()},this),this.loadIndicationDelay))},_hideLoading:function(){this.loadIndication&&(clearTimeout(this._loadingTimer),this._loadIndicator.hide())},search:function(n){return this._resetSorting(),this._resetPager(),this.loadData(n)},loadData:function(n){n=n||(this.filtering?this.getFilter():{});t.extend(n,this._loadStrategy.loadParams(),this._sortingParams());var i=this._callEventHandler(this.onDataLoading,{filter:n});return this._controllerCall("loadData",n,i.cancel,function(n){n&&(this._loadStrategy.finishLoad(n),this._callEventHandler(this.onDataLoaded,{data:n}))})},getFilter:function(){var n={};return this._eachField(function(t){t.filtering&&this._setItemFieldValue(n,t,t.filterValue())}),n},_sortingParams:function(){return this.sorting&&this._sortField?{sortField:this._sortField.name,sortOrder:this._sortOrder}:{}},getSorting:function(){var n=this._sortingParams();return{field:n.sortField,order:n.sortOrder}},clearFilter:function(){var n=this._createFilterRow();return this._filterRow.replaceWith(n),this._filterRow=n,this.search()},insertItem:function(n){var i=n||this._getValidatedInsertItem(),r;return i?(r=this._callEventHandler(this.onItemInserting,{item:i}),this._controllerCall("insertItem",i,r.cancel,function(n){n=n||i;this._loadStrategy.finishInsert(n);this._callEventHandler(this.onItemInserted,{item:n})})):t.Deferred().reject().promise()},_getValidatedInsertItem:function(){var n=this._getInsertItem();return this._validateItem(n,this._insertRow)?n:null},_getInsertItem:function(){var n={};return this._eachField(function(t){t.inserting&&this._setItemFieldValue(n,t,t.insertValue())}),n},_validateItem:function(n,i){var r=[],f={item:n,itemIndex:this._rowIndex(i),row:i},u;return(this._eachField(function(u){if(u.validate&&(i!==this._insertRow||u.inserting)&&(i!==this._getEditRow()||u.editing)){var o=this._getItemFieldValue(n,u),e=this._validation.validate(t.extend({value:o,rules:u.validate},f));this._setCellValidity(i.children().eq(this._visibleFieldIndex(u)),e);e.length&&r.push.apply(r,t.map(e,function(n){return{field:u,message:n}}))}}),!r.length)?!0:(u=t.extend({errors:r},f),this._callEventHandler(this.onItemInvalid,u),this.invalidNotify(u),!1)},_setCellValidity:function(n,t){n.toggleClass(this.invalidClass,!!t.length).attr("title",t.join("\n"))},clearInsert:function(){var n=this._createInsertRow();this._insertRow.replaceWith(n);this._insertRow=n;this.refresh()},editItem:function(n){var t=this.rowByItem(n);t.length&&this._editRow(t)},rowByItem:function(n){return n.jquery||n.nodeType?t(n):this._content.find("tr").filter(function(){return t.data(this,f)===n})},_editRow:function(n){var t,r,i;this.editing&&(t=n.data(f),r=this._callEventHandler(this.onItemEditing,{row:n,item:t,itemIndex:this._itemIndex(t)}),r.cancel||(this._editingRow&&this.cancelEdit(),i=this._createEditRow(t),this._editingRow=n,n.hide(),i.insertBefore(n),n.data(s,i)))},_createEditRow:function(n){if(t.isFunction(this.editRowRenderer))return t(this.renderTemplate(this.editRowRenderer,this,{item:n,itemIndex:this._itemIndex(n)}));var i=t("
",t,"editcss").append(this.renderTemplate(t.editTemplate||"",t,{value:r,item:n})).appendTo(i)}),i},updateItem:function(n,t){1===arguments.length&&(t=n);var i=n?this.rowByItem(n):this._editingRow;if((t=t||this._getValidatedEditedItem()))return this._updateRow(i,t)},_getValidatedEditedItem:function(){var n=this._getEditedItem();return this._validateItem(n,this._getEditRow())?n:null},_updateRow:function(n,i){var r=n.data(f),e=this._itemIndex(r),u=t.extend(!0,{},r,i),o=this._callEventHandler(this.onItemUpdating,{row:n,item:u,itemIndex:e,previousItem:r});return this._controllerCall("updateItem",u,o.cancel,function(f){var s=t.extend(!0,{},r),o;u=f||t.extend(!0,r,i);o=this._finishUpdate(n,u,e);this._callEventHandler(this.onItemUpdated,{row:o,item:u,itemIndex:e,previousItem:s})})},_rowIndex:function(n){return this._content.children().index(t(n))},_itemIndex:function(n){return t.inArray(n,this.data)},_finishUpdate:function(n,t,i){this.cancelEdit();this.data[i]=t;var r=this._createRow(t,i);return n.replaceWith(r),r},_getEditedItem:function(){var n={};return this._eachField(function(t){t.editing&&this._setItemFieldValue(n,t,t.editValue())}),n},cancelEdit:function(){this._editingRow&&(this._getEditRow().remove(),this._editingRow.show(),this._editingRow=null)},_getEditRow:function(){return this._editingRow&&this._editingRow.data(s)},deleteItem:function(t){var i=this.rowByItem(t);if(i.length&&(!this.confirmDeleting||n.confirm(u(this.deleteConfirm,this,i.data(f)))))return this._deleteRow(i)},_deleteRow:function(n){var t=n.data(f),i=this._itemIndex(t),r=this._callEventHandler(this.onItemDeleting,{row:n,item:t,itemIndex:i});return this._controllerCall("deleteItem",t,r.cancel,function(){this._loadStrategy.finishDelete(t,i);this._callEventHandler(this.onItemDeleted,{row:n,item:t,itemIndex:i})})}};t.fn.jsGrid=function(n){var u=t.makeArray(arguments),f=u.slice(1),r=this;return this.each(function(){var s,h=t(this),u=h.data(o);if(u)if("string"==typeof n){if(s=u[n].apply(u,f),s!==i&&s!==u)return r=s,!1}else u._detachWindowResizeCallback(),u._init(n),u.render();else new e(h,n)}),r};var c={},rt=function(n){var i;t.isPlainObject(n)?i=e.prototype:(i=c[n].prototype,n=arguments[1]||{});t.extend(i,n)},l={},ut=function(n){var i=t.isPlainObject(n)?n:l[n];if(!i)throw Error("unknown locale "+n);a(jsGrid,i)},a=function(n,i){t.each(i,function(i,r){return t.isPlainObject(r)?void a(n[i]||n[i[0].toUpperCase()+i.slice(1)],r):void(n.hasOwnProperty(i)?n[i]=r:n.prototype[i]=r)})};n.jsGrid={Grid:e,fields:c,setDefaults:rt,locales:l,locale:ut,version:"1.5.3"}}(window,jQuery),function(n,t){function i(n){this._init(n)}i.prototype={container:"body",message:"Loading...",shading:!0,zIndex:1e3,shaderClass:"jsgrid-load-shader",loadPanelClass:"jsgrid-load-panel",_init:function(n){t.extend(!0,this,n);this._initContainer();this._initShader();this._initLoadPanel()},_initContainer:function(){this._container=t(this.container)},_initShader:function(){this.shading&&(this._shader=t("
").addClass(this.shaderClass).hide().css({position:"absolute",top:0,right:0,bottom:0,left:0,zIndex:this.zIndex}).appendTo(this._container))},_initLoadPanel:function(){this._loadPanel=t("
").addClass(this.loadPanelClass).text(this.message).hide().css({position:"absolute",top:"50%",left:"50%",zIndex:this.zIndex}).appendTo(this._container)},show:function(){var n=this._loadPanel.show(),t=n.outerWidth(),i=n.outerHeight();n.css({marginTop:-i/2,marginLeft:-t/2});this._shader.show()},hide:function(){this._loadPanel.hide();this._shader.hide()}};n.LoadIndicator=i}(jsGrid,jQuery),function(n,t){function i(n){this._grid=n}function r(n){this._grid=n;this._itemsCount=0}i.prototype={firstDisplayIndex:function(){var n=this._grid;return n.option("paging")?(n.option("pageIndex")-1)*n.option("pageSize"):0},lastDisplayIndex:function(){var n=this._grid,t=n.option("data").length;return n.option("paging")?Math.min(n.option("pageIndex")*n.option("pageSize"),t):t},itemsCount:function(){return this._grid.option("data").length},openPage:function(){this._grid.refresh()},loadParams:function(){return{}},sort:function(){return this._grid._sortData(),this._grid.refresh(),t.Deferred().resolve().promise()},reset:function(){return this._grid.refresh(),t.Deferred().resolve().promise()},finishLoad:function(n){this._grid.option("data",n)},finishInsert:function(n){var t=this._grid;t.option("data").push(n);t.refresh()},finishDelete:function(n,t){var i=this._grid;i.option("data").splice(t,1);i.reset()}};r.prototype={firstDisplayIndex:function(){return 0},lastDisplayIndex:function(){return this._grid.option("data").length},itemsCount:function(){return this._itemsCount},openPage:function(){this._grid.loadData()},loadParams:function(){var n=this._grid;return{pageIndex:n.option("pageIndex"),pageSize:n.option("pageSize")}},reset:function(){return this._grid.loadData()},sort:function(){return this._grid.loadData()},finishLoad:function(n){this._itemsCount=n.itemsCount;this._grid.option("data",n.data)},finishInsert:function(){this._grid.search()},finishDelete:function(){this._grid.search()}};n.loadStrategies={DirectLoadingStrategy:i,PageLoadingStrategy:r}}(jsGrid,jQuery),function(n){var t=function(n){return"undefined"!=typeof n&&null!==n},i={string:function(n,i){return t(n)||t(i)?t(n)?t(i)?(""+n).localeCompare(""+i):1:-1:0},number:function(n,t){return n-t},date:function(n,t){return n-t},numberAsString:function(n,t){return parseFloat(n)-parseFloat(t)}};n.sortStrategies=i}(jsGrid,jQuery),function(n,t,i){function r(n){this._init(n)}r.prototype={_init:function(n){t.extend(!0,this,n)},validate:function(n){var i=[];return t.each(this._normalizeRules(n.rules),function(r,u){if(!u.validator(n.value,n.item,u.param)){var f=t.isFunction(u.message)?u.message(n.value,n.item):u.message;i.push(f)}}),i},_normalizeRules:function(n){return t.isArray(n)||(n=[n]),t.map(n,t.proxy(function(n){return this._normalizeRule(n)},this))},_normalizeRule:function(n){if("string"==typeof n&&(n={validator:n}),t.isFunction(n)&&(n={validator:n}),!t.isPlainObject(n))throw Error("wrong validation config specified");return n=t.extend({},n),t.isFunction(n.validator)?n:this._applyNamedValidator(n,n.validator)},_applyNamedValidator:function(n,i){delete n.validator;var r=u[i];if(!r)throw Error('unknown validator "'+i+'"');return t.isFunction(r)&&(r={validator:r}),t.extend({},r,n)}};n.Validation=r;var u={required:{message:"Field is required",validator:function(n){return n!==i&&null!==n&&""!==n}},rangeLength:{message:"Field value length is out of the defined range",validator:function(n,t,i){return n.length>=i[0]&&n.length<=i[1]}},minLength:{message:"Field value is too short",validator:function(n,t,i){return n.length>=i}},maxLength:{message:"Field value is too long",validator:function(n,t,i){return n.length<=i}},pattern:{message:"Field value is not matching the defined pattern",validator:function(n,t,i){return"string"==typeof i&&(i=new RegExp("^(?:"+i+")$")),i.test(n)}},range:{message:"Field value is out of the defined range",validator:function(n,t,i){return n>=i[0]&&n<=i[1]}},min:{message:"Field value is too small",validator:function(n,t,i){return n>=i}},max:{message:"Field value is too large",validator:function(n,t,i){return i>=n}}};n.validators=u}(jsGrid,jQuery),function(n,t,i){function r(n){t.extend(!0,this,n);this.sortingFunc=this._getSortingFunc()}r.prototype={name:"",title:null,css:"",align:"",width:100,visible:!0,filtering:!0,inserting:!0,editing:!0,sorting:!0,sorter:"string",headerTemplate:function(){return this.title===i||null===this.title?this.name:this.title},itemTemplate:function(n){return n},filterTemplate:function(){return""},insertTemplate:function(){return""},editTemplate:function(n,t){return this._value=n,this.itemTemplate(n,t)},filterValue:function(){return""},insertValue:function(){return""},editValue:function(){return this._value},_getSortingFunc:function(){var i=this.sorter;if(t.isFunction(i))return i;if("string"==typeof i)return n.sortStrategies[i];throw Error('wrong sorter for the field "'+this.name+'"!');}};n.Field=r}(jsGrid,jQuery),function(n,t){function i(n){r.call(this,n)}var r=n.Field;i.prototype=new r({autosearch:!0,readOnly:!1,filterTemplate:function(){if(!this.filtering)return"";var t=this._grid,n=this.filterControl=this._createTextBox();return this.autosearch&&n.on("keypress",function(n){13===n.which&&(t.search(),n.preventDefault())}),n},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextBox():""},editTemplate:function(n){if(!this.editing)return this.itemTemplate.apply(this,arguments);var t=this.editControl=this._createTextBox();return t.val(n),t},filterValue:function(){return this.filterControl.val()},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return t("").attr("type","text").prop("readonly",!!this.readOnly)}});n.fields.text=n.TextField=i}(jsGrid,jQuery),function(n,t,i){function r(n){u.call(this,n)}var u=n.TextField;r.prototype=new u({sorter:"number",align:"right",readOnly:!1,filterValue:function(){return this.filterControl.val()?parseInt(this.filterControl.val()||0,10):i},insertValue:function(){return this.insertControl.val()?parseInt(this.insertControl.val()||0,10):i},editValue:function(){return this.editControl.val()?parseInt(this.editControl.val()||0,10):i},_createTextBox:function(){return t("").attr("type","number").prop("readonly",!!this.readOnly)}});n.fields.number=n.NumberField=r}(jsGrid,jQuery),function(n,t){function i(n){r.call(this,n)}var r=n.TextField;i.prototype=new r({insertTemplate:function(){return this.inserting?this.insertControl=this._createTextArea():""},editTemplate:function(n){if(!this.editing)return this.itemTemplate.apply(this,arguments);var t=this.editControl=this._createTextArea();return t.val(n),t},_createTextArea:function(){return t("