/*
* Kendo UI v2011.3.1129 (http://kendoui.com)
* Copyright 2011 Telerik AD. All rights reserved.
*
* Kendo UI commercial licenses may be obtained at http://kendoui.com/license.
* If you do not own a commercial license, this file shall be governed by the
* GNU General Public License (GPL) version 3. For GPL requirements, please
* review: http://www.gnu.org/copyleft/gpl.html
*/

(function(a,b){function _(b,c){var d=a(b)[0].tBodies[0],e=d?d.rows:[],f,g,h,i=c.length,j=[],k,l,m,n;for(f=0,g=e.length;f<g;f++){l={},n=!0,k=e[f].cells;for(h=0;h<i;h++)m=k[h],m.nodeName.toLowerCase()!=="th"&&(n=!1,l[c[h].field]=m.innerHTML);n||j.push(l)}return j}function $(b,c){var d=a(b)[0].children,e,f,g=[],h,i=c[0],j=c[1],k;for(e=0,f=d.length;e<f;e++)h={},k=d[e],h[i.field]=k.text,h[j.field]=k.value,g.push(h);return g}function X(){this._store={}}function U(a,b){var c=new K(a),b=b||{},d=b.aggregate,e=b.filter;e&&(c=c.filter(e));return c.aggregate(d)}function T(a,c){var d=new K(a),c=c||{},e=c.group,f=L(c.sort||[]).concat(Q(e||[])),g,h=c.filter,i=c.skip,j=c.take;h&&(d=d.filter(h),g=d.toArray().length),f&&(d=d.sort(f),e&&(a=d.toArray())),i!==b&&j!==b&&(d=d.range(i,j)),e&&(d=d.group(e,a));return{total:g,data:d.toArray()}}function R(a,b,c,d,e){b=b||[];var f,g,h,i,j=b.length;for(f=0;f<j;f++){g=b[f],h=g.aggregate;var k=g.field;a[k]=a[k]||{},a[k][h]=S[h.toLowerCase()](a[k][h],c,n.accessor(k),d,e)}}function Q(a,c){var d=typeof a===s?{field:a,dir:c}:a,e=h(d)?d:d!==b?[d]:[];return k(e,function(a){return{field:a.field,dir:a.dir||"asc",aggregates:a.aggregates}})}function P(a){return a=h(a)?a:[a]}function O(a){if(a&&!g(a)){if(h(a)||!a.filters)a={logic:"and",filters:h(a)?a:[a]};N(a);return a}}function N(a){var b,c,d,e,f=a.filters;if(f)for(b=0,c=f.length;b<c;b++)d=f[b],e=d.operator,e&&typeof e===s&&(d.operator=M[e.toLowerCase()]||e),N(d)}function L(a,c){if(a){var d=typeof a===s?{field:a,dir:c}:a,e=h(d)?d:d!==b?[d]:[];return i(e,function(a){return!!a.dir})}}function K(a){this.data=a||[]}var c=a.extend,d=a.proxy,e=a.isFunction,f=a.isPlainObject,g=a.isEmptyObject,h=a.isArray,i=a.grep,j=a.ajax,k,l=a.each,m=a.noop,n=window.kendo,o=n.Observable,p=n.Class,q=n.data.Model,r=n.data.ModelSet,s="string",t="create",u="read",v="update",w="destroy",x="change",y="modelChange",z="multiple",A="single",B="error",C="requestStart",D=[t,u,v,w],E=function(a){return a},F=n.getter,G=n.stringify,H=Math,I={selector:function(a){return e(a)?a:F(a)},asc:function(a){var b=this.selector(a);return function(a,c){a=b(a),c=b(c);return a>c?1:a<c?-1:0}},desc:function(a){var b=this.selector(a);return function(a,c){a=b(a),c=b(c);return a<c?1:a>c?-1:0}},create:function(a){return I[a.dir.toLowerCase()](a.field)},combine:function(a){return function(b,c){var d=a[0](b,c),e,f;for(e=1,f=a.length;e<f;e++)d=d||a[e](b,c);return d}}};k=function(a,b){var c,d=a.length,e=Array(d);for(c=0;c<d;c++)e[c]=b(a[c],c,a);return e};var J=function(){function d(d,e,f,g){var h;f!=b&&(typeof f===s&&(f=f.replace(c,"\\'"),h=a.exec(f),h?f=new Date(+h[1]):g?(f="'"+f.toLowerCase()+"'",e=e+".toLowerCase()"):f="'"+f+"'"),f.getTime&&(e+=".getTime()",f=f.getTime()));return e+" "+d+" "+f}var a=/^\/Date\((.*?)\)\/$/,c=/'/g;return{eq:function(a,b,c){return d("==",a,b,c)},neq:function(a,b,c){return d("!=",a,b,c)},gt:function(a,b,c){return d(">",a,b,c)},gte:function(a,b,c){return d(">=",a,b,c)},lt:function(a,b,c){return d("<",a,b,c)},lte:function(a,b,c){return d("<=",a,b,c)},startswith:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".lastIndexOf('"+b+"', 0) == 0"},endswith:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".lastIndexOf('"+b+"') == "+a+".length - "+(b||"").length},contains:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".indexOf('"+b+"') >= 0"}}}();K.normalizeFilter=O,K.filterExpr=function(a){var c=[],d={and:" && ",or:" || "},e,f,g,h,i=[],j=[],k,l,m=a.filters;for(e=0,f=m.length;e<f;e++)g=m[e],k=g.field,l=g.operator,g.filters?(h=K.filterExpr(g),g=h.expression.replace(/__o\[(\d+)\]/g,function(a,b){b=+b;return"__o["+(j.length+b)+"]"}).replace(/__f\[(\d+)\]/g,function(a,b){b=+b;return"__f["+(i.length+b)+"]"}),j.push.apply(j,h.operators),i.push.apply(i,h.fields)):(typeof k=="function"?(h="__f["+i.length+"](d)",i.push(k)):h=n.expr(k),typeof l=="function"?(g="__o["+j.length+"]("+h+", "+g.value+")",j.push(l)):g=J[(l||"eq").toLowerCase()](h,g.value,g.ignoreCase!==b?g.ignoreCase:!0)),c.push(g);return{expression:"("+c.join(d[a.logic])+")",fields:i,operators:j}};var M={"==":"eq",equals:"eq",isequalto:"eq",equalto:"eq",equal:"eq","!=":"neq",ne:"neq",notequals:"neq",isnotequalto:"neq",notequalto:"neq",notequal:"neq","<":"lt",islessthan:"lt",lessthan:"lt",less:"lt","<=":"lte",le:"lte",islessthanorequalto:"lte",lessthanequal:"lte",">":"gt",isgreaterthan:"gt",greaterthan:"gt",greater:"gt",">=":"gte",isgreaterthanorequalto:"gte",greaterthanequal:"gte",ge:"gte"};K.prototype={toArray:function(){return this.data},range:function(a,b){return new K(this.data.slice(a,a+b))},skip:function(a){return new K(this.data.slice(a))},take:function(a){return new K(this.data.slice(0,a))},select:function(a){return new K(k(this.data,a))},orderBy:function(a){var b=this.data.slice(0),c=e(a)||!a?I.asc(a):a.compare;return new K(b.sort(c))},orderByDescending:function(a){return new K(this.data.slice(0).sort(I.desc(a)))},sort:function(a,b){var c,d,e=L(a,b),f=[];if(e.length){for(c=0,d=e.length;c<d;c++)f.push(I.create(e[c]));return this.orderBy({compare:I.combine(f)})}return this},filter:function(a){var b,c,d,e,f,g=this.data,h,i,j=[],k;a=O(a);if(!a||a.filters.length===0)return this;e=K.filterExpr(a),h=e.fields,i=e.operators,f=k=new Function("d, __f, __o","return "+e.expression);if(h.length||i.length)k=function(a){return f(a,h,i)};for(b=0,d=g.length;b<d;b++)c=g[b],k(c)&&j.push(c);return new K(j)},group:function(a,b){a=Q(a||[]),b=b||this.data;var c=this,d=new K(c.data),e;a.length>0&&(e=a[0],d=d.groupBy(e).select(function(c){var d=(new K(b)).filter([{field:c.field,operator:"eq",value:c.value}]);return{field:c.field,value:c.value,items:a.length>1?(new K(c.items)).group(a.slice(1),d.toArray()).toArray():c.items,hasSubgroups:a.length>1,aggregates:d.aggregate(e.aggregates)}}));return d},groupBy:function(a){if(g(a)||!this.data.length)return new K([]);var b=a.field,c=this.sort(b,a.dir||"asc").toArray(),d=n.accessor(b),e,f=d.get(c[0],b),h={field:b,value:f,items:[]},i,j,k,l=[h];for(j=0,k=c.length;j<k;j++)e=c[j],i=d.get(e,b),f!==i&&(f=i,h={field:b,value:f,items:[]},l.push(h)),h.items.push(e);return new K(l)},aggregate:function(a){var b,c,d={};if(a&&a.length)for(b=0,c=this.data.length;b<c;b++)R(d,a,this.data[b],b,c);return d}};var S={sum:function(a,b,c){return a=(a||0)+c.get(b)},count:function(a,b,c){return(a||0)+1},average:function(a,b,c,d,e){a=(a||0)+c.get(b),d==e-1&&(a=a/e);return a},max:function(a,b,c){var a=a||0,d=c.get(b);a<d&&(a=d);return a},min:function(a,b,c){var d=c.get(b),a=a||d;a>d&&(a=d);return a}},V=p.extend({init:function(a){this.data=a.data},read:function(a){a.success(this.data)},update:function(a){a.success(a.data)},create:m,destory:m}),W=p.extend({init:function(a){var b=this,d;a=b.options=c({},b.options,a),l(D,function(b,c){typeof a[c]===s&&(a[c]={url:a[c]})}),b.cache=a.cache?X.create(a.cache):{find:m,add:m},d=a.parameterMap,b.parameterMap=e(d)?d:function(a){var b={};l(a,function(a,c){a in d&&(a=d[a],f(a)&&(c=a.value(c),a=a.key)),b[a]=c});return b}},options:{parameterMap:E},create:function(a){return j(this.setup(a,t))},read:function(c){var d=this,e,f,g,h=d.cache;c=d.setup(c,u),e=c.success||m,f=c.error||m,g=h.find(c.data),g!==b?e(g):(c.success=function(a){h.add(c.data,a),e(a)},a.ajax(c))},update:function(a){return j(this.setup(a,v))},destroy:function(a){return j(this.setup(a,w))},setup:function(a,b){a=a||{};var d=this,f=d.options[b],g=e(f.data)?f.data():f.data;a=c(!0,{},f,a),a.data=d.parameterMap(c(g,a.data),b);return a}});X.create=function(a){var b={inmemory:function(){return new X}};if(f(a)&&e(a.find))return a;if(a===!0)return new X;return b[a]()},X.prototype={add:function(a,c){a!==b&&(this._store[G(a)]=c)},find:function(a){return this._store[G(a)]},clear:function(){this._store={}},remove:function(a){delete this._store[G(a)]}};var Y=p.extend({init:function(a){var b=this,c,d;a=a||{};for(c in a)d=a[c],b[c]=typeof d===s?F(d):d;f(b.model)&&(b.model=q.define(b.model))},parse:E,data:E,total:function(a){return a.length},groups:E,status:function(a){return a.status},aggregates:function(){return{}}}),Z=o.extend({init:function(a){var d=this,f,h,i;a=d.options=c({},d.options,a),c(d,{_map:{},_prefetch:{},_data:[],_ranges:[],_view:[],_pageSize:a.pageSize,_page:a.page||(a.pageSize?1:b),_sort:L(a.sort),_filter:O(a.filter),_group:Q(a.group),_aggregate:a.aggregate}),o.fn.init.call(d),i=a.transport,i?(i.read=typeof i.read===s?{url:i.read}:i.read,a.type&&(i=c(!0,{},n.data.transports[a.type],i),a.schema=c(!0,{},n.data.schemas[a.type],a.schema)),d.transport=e(i.read)?i:new W(i)):d.transport=new V({data:a.data}),d.reader=new n.data.readers[a.schema.type||"json"](a.schema),h=d.reader.model||{},f=h.id,q&&!g(h)&&(d._set=new r({model:h,data:d._data,reader:d.reader,batch:a.batch,sendAllFields:a.sendAllFields,transport:d.transport,change:function(){var a=d.data();d._total=d.reader.total(a),d._process(a)},modelChange:function(a){d.trigger(y,a)},error:function(a){d.trigger(B,a)}})),f&&(d.id=function(a){return f(a)}),d.bind([B,x,t,w,v,C,y],a)},options:{data:[],schema:{},serverSorting:!1,serverPaging:!1,serverFiltering:!1,serverGrouping:!1,serverAggregates:!1,sendAllFields:!0,batch:!1},get:function(a){return this._set.get(a)},sync:function(){this._set.sync()},add:function(a){return this._set.add(a)},insert:function(a,b){return this._set.insert(a,b)},cancelChanges:function(){this._set.cancelChanges()},read:function(a){var b=this,c=b._params(a);b._queueRequest(c,function(){b.trigger(C),b._ranges=[],b.transport.read({data:c,success:d(b.success,b),error:d(b.error,b)})})},indexOf:function(a){return this._set.indexOf(a)},_params:function(a){var b=this;return c({take:b.take(),skip:b.skip(),page:b.page(),pageSize:b.pageSize(),sort:b._sort,filter:b._filter,group:b._group,aggregate:b._aggregate},a)},_queueRequest:function(a,c){var e=this;e._requestInProgress?e._pending={callback:d(c,e),options:a}:(e._requestInProgress=!0,e._pending=b,c())},_dequeueRequest:function(){var a=this;a._requestInProgress=!1,a._pending&&a._queueRequest(a._pending.options,a._pending.callback)},remove:function(a){this._set.remove(a)},error:function(){this.trigger(B,arguments)},success:function(a){var b=this,c={},d,e=b.options.serverGrouping===!0&&b._group&&b._group.length>0;a=b.reader.parse(a),b._total=b.reader.total(a),b._aggregate&&b.options.serverAggregates&&(b._aggregateResult=b.reader.aggregates(a)),e?a=b.reader.groups(a):a=b.reader.data(a),b._data=a,b._set&&b._set.data(a);var f=b._skip||0,g=f+a.length;b._ranges.push({start:f,end:g,data:a}),b._ranges.sort(function(a,b){return a.start-b.start}),b._dequeueRequest(),b._process(a)},_process:function(a){var c=this,d={},e,f=c.options.serverGrouping===!0&&c._group&&c._group.length>0;c.options.serverPaging!==!0&&(d.skip=c._skip,d.take=c._take||c._pageSize,d.skip===b&&c._page!==b&&c._pageSize!==b&&(d.skip=(c._page-1)*c._pageSize)),c.options.serverSorting!==!0&&(d.sort=c._sort),c.options.serverFiltering!==!0&&(d.filter=c._filter),c.options.serverGrouping!==!0&&(d.group=c._group),c.options.serverAggregates!==!0&&(d.aggregate=c._aggregate,c._aggregateResult=U(a,d)),e=T(a,d),c._view=e.data,e.total!==b&&!c.options.serverFiltering&&(c._total=e.total),c.trigger(x)},at:function(a){return this._data[a]},data:function(a){var c=this;if(a!==b)c._data=a,c._set&&c._set.data(a),c._process(a);else return c._data},view:function(){return this._view},query:function(a){var c=this,d,e=c.options.serverSorting||c.options.serverPaging||c.options.serverFiltering||c.options.serverGrouping||c.options.serverAggregates;a!==b&&(c._pageSize=a.pageSize,c._page=a.page,c._sort=a.sort,c._filter=a.filter,c._group=a.group,c._aggregate=a.aggregate,c._skip=a.skip,c._take=a.take,c._skip===b&&(c._skip=c.skip(),a.skip=c.skip()),c._take===b&&c._pageSize!==b&&(c._take=c._pageSize,a.take=c._take),a.sort&&(c._sort=a.sort=L(a.sort)),a.filter&&(c._filter=a.filter=O(a.filter)),a.group&&(c._group=a.group=Q(a.group)),a.aggregate&&(c._aggregate=a.aggregate=P(a.aggregate))),e||c._data===b||c._data.length==0?c.read(a):(c.trigger(C),d=T(c._data,a),c.options.serverFiltering||(d.total!==b?c._total=d.total:c._total=c.reader.total(c._data)),c._view=d.data,c._aggregateResult=U(c._data,a),c.trigger(x))},fetch:function(a){var b=this;a&&e(a)&&b.one(x,a),b._query()},_query:function(a){var b=this;b.query(c({},{page:b.page(),pageSize:b.pageSize(),sort:b.sort(),filter:b.filter(),group:b.group(),aggregate:b.aggregate()},a))},page:function(a){var c=this,d;if(a!==b)a=H.max(H.min(H.max(a,1),c.totalPages()),1),c._query({page:a});else{d=c.skip();return d!==b?H.round((d||0)/(c.take()||1))+1:b}},pageSize:function(a){var c=this;if(a!==b)c._query({pageSize:a});else return c.take()},sort:function(a){var c=this;if(a!==b)c._query({sort:a});else return c._sort},filter:function(a){var c=this;if(a===b)return c._filter;c._query({filter:a})},group:function(a){var c=this;if(a!==b)c._query({group:a});else return c._group},total:function(){return this._total},aggregate:function(a){var c=this;if(a!==b)c._query({aggregate:a});else return c._aggregate},aggregates:function(){return this._aggregateResult},totalPages:function(){var a=this,b=a.pageSize()||a.total();return H.ceil((a.total()||0)/b)},inRange:function(a,b){var c=this,d=H.min(a+b,c.total());if(!c.options.serverPaging&&c.data.length>0)return!0;return c._findRange(a,d).length>0},range:function(a,c){a=H.min(a||0,this.total());var d=this,e=H.max(H.floor(a/c),0)*c,f=H.min(e+c,d.total()),g;g=d._findRange(a,H.min(a+c,d.total()));if(g.length){d._skip=a>d.skip()?H.min(f,(d.totalPages()-1)*d.take()):e,d._take=c;var h=d.options.serverPaging;try{d.options.serverPaging=!0,d._process(g)}finally{d.options.serverPaging=h}}else c!==b&&(d._rangeExists(e,f)?e<a&&d.prefetch(f,c,function(){d.range(a,c)}):d.prefetch(e,c,function(){a>e&&f<d.total()&&!d._rangeExists(f,H.min(f+c,d.total()))?d.prefetch(f,c,function(){d.range(a,c)}):d.range(a,c)}))},_findRange:function(a,b){var c=this,d,e=c._ranges,f,g=[],h,i,j,k,d;for(h=0,d=e.length;h<d;h++){f=e[h];if(a>=f.start&&a<=f.end){var l=0;for(i=h;i<d;i++){f=e[i];if(f.data.length&&a+l>=f.start&&l+l<=f.end){j=0,a+l>f.start&&(j=a+l-f.start),k=f.data.length,f.end>b&&(k=k-(f.end-b)),l+=k-j,g=g.concat(f.data.slice(j,k));if(b<=f.end&&l==b-a)return g}}break}}return[]},skip:function(){var a=this;if(a._skip===b)return a._page!==b?(a._page-1)*(a.take()||1):b;return a._skip},take:function(){var a=this;return a._take||a._pageSize},prefetch:function(a,b,c){var d=this,e=H.min(a+b,d.total()),f={start:a,end:e,data:[]},g={take:b,skip:a,page:a/b+1,pageSize:b,sort:d._sort,filter:d._filter,group:d._group,aggregate:d._aggregate};d._rangeExists(a,e)?c&&c():(clearTimeout(d._timeout),d._timeout=setTimeout(function(){d._queueRequest(g,function(){d.transport.read({data:g,success:function(b){d._dequeueRequest();var e=!1;for(var g=0,h=d._ranges.length;g<h;g++)if(d._ranges[g].start===a){e=!0,f=d._ranges[g];break}e||d._ranges.push(f),b=d.reader.parse(b),f.data=d.reader.data(b),f.end=f.start+f.data.length,d._ranges.sort(function(a,b){return a.start-b.start}),c&&c()}})})},100))},_rangeExists:function(a,b){var c=this,d=c._ranges,e,f;for(e=0,f=d.length;e<f;e++)if(d[e].start<=a&&d[e].end>=b)return!0;return!1}});Z.create=function(a){a=h(a)?{data:a}:a;var b=a||{},c=b.data,d=b.fields,e=b.table,f=b.select;!c&&d&&!b.transport&&(e?c=_(e,d):f&&(c=$(f,d))),b.data=c;return b instanceof Z?b:new Z(b)},c(!0,n.data,{readers:{json:Y},Query:K,DataSource:Z,LocalTransport:V,RemoteTransport:W,Cache:X,DataReader:Y})})(jQuery)
